Answers:
~/.bashrc并/etc/bash.bashrc在每次bash启动交互式shell 时运行。
相反,在每次启动任何登录 Shell 时都会运行~/.profile和。因此,它不必一定是shell,而必须一定是登录shell(而且许多shell实例不是login shell)。/etc/profilebashbash
bash壳是一个壳,其中所述壳的程序,提供它bash,而不是某些其他程序,如dash。因此,PATH在bashrc文件中添加一条将条目追加到其中的命令将是:
当外壳不在时什么也不做bash,通常是这种情况。例如,PATH当您处于图形登录会话中时,将保持不变。记住,PATH不仅仅是命令行程序使用。
在存在嵌套bash壳的情况下,一遍又一遍地添加它。因此,如果您在外壳程序内启动外壳程序(出于各种原因这是很常见的),那么您将有多个~/bin条目堆积在上PATH。这使得PATH环境变量难以阅读,有时还会降低性能。
这些将是不希望的。因此,将其放在文件中是错误的bashrc。它确实属于~/.profile。~/.profile是以下方面的正确地方:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
非登录外壳将登录外壳(或行为类似于登录外壳)作为其父外壳,并PATH从该登录外壳继承其大多数环境变量,包括。因此,放置修改路径的命令~/.profile要求您注销然后重新登录才能使它们生效,但是这也会影响非登录外壳程序的环境(以及非外壳程序的环境,因为每个程序都会获得其作用)。从其父进程继承的自己的环境变量集(称为“环境”)。
bin目录在您登录时不存在,并且您是在此登录会话期间创建的。如果您注销并重新登录,它将在您的中PATH。由于创建私有bin目录仅需要执行一次,因此这是一次性的麻烦。