cd
我正在使用 检查 macOS 终端中命令的路径which cd
,我得到了/usr/bin/cd
,所以每当我使用这个完整路径来执行时,cd
它都无法按预期工作。
这里有一些例子。
此处的任何有效路径 root(
/
) 作为参数。/usr/bin/cd /
-> 不按指定更改目录此处的任何无效路径(kjfd)作为参数。
/usr/bin/cd kjfd
->/usr/bin/cd: line 4: cd: kjfd: No such file or directory
所以,我真的不明白为什么cd
完整路径地址(/usr/bin/cd /
)不起作用而其他命令却bin/echo
起作用。
答案1
它正在工作。/usr/bin/cd
改变它自己的工作目录。然后退出。
进程只能更改自己的工作目录,而不能更改其他进程的工作目录。没有外部工具可以更改当前 shell 的工作目录(调试器等除外),因此通常使用cd
内置这是 shell 本身的一部分。是 shell 自己更改自己的工作目录,/usr/bin/cd
无法代替 shell 执行此操作。
有这个问题外部命令有什么意义cd
?这是来自答案之一那里:
它的主要作用是确保 POSIX 工具箱在 shell 内部和外部均可用 […]
对于
cd
,这不是非常有用,但请注意,cd
更改目录但有其他副作用:它返回一个退出状态,帮助确定您是否能够chdir()
进入该目录,并输出一个有用的错误消息,解释为什么你不能chdir()
。
which cd
无法识别 shell 内置命令。同样,您需要 shell 本身来告诉 solecd
到底是什么。例如,在 Bash 中有type
内置命令:
$ type cd
cd is a shell builtin