查找 shell 命令的查找算法

查找 shell 命令的查找算法

在我的示例中,我将使用 shell 命令“rake”。

当 rake 被调用时,Ubuntu 使用什么查找顺序来查找要做什么?例如,它是否查找 .bash_profile 中指定的路径,是否查找其他地方,等等。

答案1

我假设您是通过 来安装的rvm。正如您所说,您的PATH是通过.bashrc或 来修改的.bash_profile

shell 所做的非常简单,它查看您的命令并用空格将其拆分,然后查找第一个单词(在您的情况下为rake)。然后它查看PATH环境变量(使用 查看其值echo $PATH),其中包含用分号( )分隔的不同目录:。它用分号将其拆分,然后遍历每个目录以查看是否有您有权执行的文件。当找到它时,shell 将执行它并将其余单词作为参数。

对于rvm,你应该/home/username/.rvm/rubies/ruby-1.9.3-p374@global/bin在 中有PATH。它应该找到一个名为 which 的可执行文件,然后在 中执行rake一个名为 which 的可执行文件(你的版本可能有所不同)。rake/home/username/.rvm/gems/ruby-1.9.3-p374@global/gems/rake-10.0.3/bin/home/username/.rvm/gems/ruby-1.9.3-p374@global/gems/rake-10.0.3/lib/rake.rb

相关内容