【发布时间】:2018-02-26 03:13:35
【问题描述】:
我相信标题说明了一切,我知道其中一些命令可以在 /usr/bin 之类的地方找到,但我想知道所有文件夹的详细信息,或者定位它们的过程是。
【问题讨论】:
-
打开终端并输入命令
echo $PATH。这应该会为您提供默认情况下位于和搜索命令和实用程序的目录数组。
我相信标题说明了一切,我知道其中一些命令可以在 /usr/bin 之类的地方找到,但我想知道所有文件夹的详细信息,或者定位它们的过程是。
【问题讨论】:
echo $PATH。这应该会为您提供默认情况下位于和搜索命令和实用程序的目录数组。
如果您想知道在哪里找到特定命令,请输入:
which command
例如:
which ls
正如 CJK 所提到的,echo $PATH 会显示正在搜索的所有目录(按搜索顺序)以查找命令。
一些命令,例如 cd,内置在 shell 中,不需要在任何地方找到,尽管也可能有程序实现。命令“type”,如:
type -a cd
...会特别告诉你内置了一个命令。
更多信息在这里:https://unix.stackexchange.com/questions/116955/where-is-cd-located
【讨论】:
没有mac shell这样的东西,正确答案取决于你实际使用的shell。但是如果你只是使用默认设置,你的 shell 将是 bash,在这种情况下,type 命令就可以解决问题,例如:
type ls
但是,如果你真的有 bash,你需要小心别名:如果你有一个别名 foo 和一个可执行文件 foo,
type foo
将报告别名,但在非交互式上下文(shell 脚本)中,别名不会展开,并且使用可执行文件 foo。
如果您遵循@kshetline 的答案中给出的建议,即使用
type -a foo
您可以按搜索顺序找到所有可以找到 foo 的地方。例如,在我的 bash 中
type -a ls
输出
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
【讨论】: