我对*nix 系统中的dotfiles有一个基本的了解。但是我仍然对登录外壳和非登录外壳之间的区别感到很困惑?
一堆不同的答案(包括多个重复)已经解决了以下要点:
man bash
有关更多详细信息,请参阅文档(例如,)答案没有告诉(以及我仍然感到困惑的事情)是:
什么是用例一的登录或者非登录壳呢?(例如,我只配置zshrc
了zsh
和这足以让大多数个人开发的要求,我知道这不是这么简单什么vimrc
来vim
)
在非登录shell上使用登录的原因是什么(除了消耗不同的启动文件和生命周期)?
网络上有太多文章/资源教人们如何设置环境变量,PATH
以便他们可以使用java
或python
等的简写代替命令行界面中的绝对路径。
我想知道的是,当我们输入命令并按回车键时,幕后发生了什么(类似于在浏览器中输入 URL 时发生的情况)。
这是我的猜测:
$@
)$PS#
,$PROMPT
等等)我最想弄清楚的部分是命令查找。很明显,$PATH
被一些后台函数消耗掉了,用:
/;
作为分隔符,那么发生了什么?我们是否使用哈希表(键:文件的基本名称,值:文件的绝对目录名)将二进制文件存储在这些 PATH 或其他一些挂钩下?
注意:我最初认为它是哈希表,因为我可以用它[ -z hash [command] ]
来检查当前环境中是否有命令可用,但是当我使用时,hash | grep python
我没有从输出中得到任何东西,而which python
按预期工作。(我认为该机制可能是特定于 shell 的,但我想更深入地了解它。)