bor*_*ges 9 command-line bash .profile
由于.bashrc更“通用”(就其.profile来源而言),为什么“包含~/bin到路径”程序不在内部.bashrc?为什么用户不希望在非登录 shell 中使用它?(尤其是如今,非登录 shell 更为常见*。)
我知道我可以手动进行此类更改,但我想知道是否有原因。
*无法证明,但我认为是这样。
Eli*_*gan 13
~/.bashrc并且/etc/bash.bashrc在每次bash启动交互式shell时运行。
相反,每次启动任何登录shell时都会运行~/.profile和。所以它不必是一个shell,但它必须是一个登录 shell(并且许多shell 实例不是登录 shell)。/etc/profilebashbash
bash壳是一个壳,其中所述壳的程序,提供它bash,而不是某些其他程序,如dash。因此,PATH在bashrc文件中添加一个将条目附加到的命令将:
当 shell is not 时什么都不做bash,这通常是这种情况。例如,PATH当您在图形登录会话中时不会被修改。请记住,PATH不仅仅是命令行程序使用。
在存在嵌套bashshell的情况下一遍又一遍地追加它。所以,如果你在一个 shell 中启动一个 shell——这是很常见的,出于各种原因——那么你将有多个~/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
Run Code Online (Sandbox Code Playgroud)
非登录 shell 将登录 shell(或行为类似于登录 shell 的东西)作为其父级,并PATH从该登录 shell继承其大部分环境变量,包括。因此,放入路径修改命令~/.profile需要您注销并重新登录以使它们生效,但这也会影响非登录 shell 的环境(以及非 shell 程序的环境,因为每个程序都获得了它的自己的一组环境变量——称为它的“环境”——从它的父进程继承而来)。
| 归档时间: |
|
| 查看次数: |
5748 次 |
| 最近记录: |