我是bash的新手,我看到人们经常在修改:
时在目录后添加PATH
。搜索了一段时间后,我没有找到答案,或者我认为我没有正确搜索。所以我希望我能在这里得到答案。
示例:
/Users/chengluli/anaconda/bin:/Users/chengluli/.rbenv/shims:/
:
和bin
之后shims
做了什么?
答案 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 bash
和hash
命令
答案 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
。