结肠在PATH中做了什么

时间:2016-03-02 02:56:30

标签: bash terminal

我是bash的新手,我看到人们经常在修改:时在目录后添加PATH。搜索了一段时间后,我没有找到答案,或者我认为我没有正确搜索。所以我希望我能在这里得到答案。

示例:

/Users/chengluli/anaconda/bin:/Users/chengluli/.rbenv/shims:/

:bin之后shims做了什么?

4 个答案:

答案 0 :(得分:13)

:是分隔符。 PATH变量本身就是运行命令时“遍历”的文件夹列表。

在这种情况下,PATH上的文件夹为:

  • /Users/chengluli/anaconda/bin
  • /Users/chengluli/.rbenv/shims
  • /

答案 1 :(得分:6)

正如其他人所说,:是一个分隔符(Windows使用分号;)。但您可能会想到:变量的 end 处的尾随冒号PATH。例如:

/Users/chengluli/anaconda/bin:/Users/chengluli/.rbenv/shims:

来自bash手册页:

PATH值中的零长度(null)目录名称表示当前目录。空目录名称可能显示为两个相邻的冒号,或者显示为初始冒号或尾随冒号。

将当前目录放在PATH中通常被认为是安全风险并且是个坏主意。使用root用户时尤其危险。

顺便说一句,bash只在第一次调用外部程序时使用$ PATH,之后它使用哈希表。请参阅man bashhash命令

答案 2 :(得分:1)

如果在命令行运行ls -l 123,则告诉bash在文件系统中找到名为ls的命令。但是,ls只是一个文件名,bash需要文件系统中ls的绝对路径。因此,bash在默认目录列表中逐个搜索名为ls的文件。

默认目录列表存储在PATH变量中,以:分隔。

答案 3 :(得分:-1)

来自man bash命令

的输出的引用
  

PATH
  命令的搜索路径。它是以冒号分隔的目录列表,其中shell查找命令(请参阅下面的命令执行)。零长度(null)目录                 PATH值中的name表示当前目录。空目录名称可能显示为两个相邻的冒号,或者显示为初始冒号或尾随冒号。默认路径是sys-tem依赖的,由安装bash的管理员设置。一个常见的值是``/ usr / gnu / bin:/ usr / local / bin:/ usr / ucb:/ bin:/ usr / bin''。

如果您对bash脚本或环境变量有疑问,请先使用man bash