`/usr/bin/cd` 在 Mac 终端中不起作用

`/usr/bin/cd` 在 Mac 终端中不起作用

cd我正在使用 检查 macOS 终端中命令的路径which cd,我得到了/usr/bin/cd,所以每当我使用这个完整路径来执行时,cd它都无法按预期工作。

这里有一些例子。

  1. 此处的任何有效路径 root( /) 作为参数。

    /usr/bin/cd /-> 不按指定更改目录

  2. 此处的任何无效路径(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

相关内容