结肠在PATH中做了什么

Kab*_*Lee 15 bash terminal

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

例:

/Users/chengluli/anaconda/bin:/Users/chengluli/.rbenv/shims:/
Run Code Online (Sandbox Code Playgroud)

什么是:binshims做什么?

sla*_*foo 15

:是分隔符.该PATH变量本身是一个正在"走"过,当你运行一个命令文件夹列表.

在这种情况下,您的文件夹PATH是:

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

  • 也许还需要指出,“PATH”中的“/”确实是一个疯狂的东西,而该示例缺少许多基本的系统目录,例如“/usr/bin”、“/usr/local/bin”等。 (2认同)

cda*_*rke 8

正如其他人所说,它:是一个分隔符(Windows使用分号;).但你可能在想尾随冒号:结束了的PATH变量.例如:

/Users/chengluli/anaconda/bin:/Users/chengluli/.rbenv/shims:
Run Code Online (Sandbox Code Playgroud)

从bash手册页:

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

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

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