`cd` 的返回状态始终为 0

`cd` 的返回状态始终为 0

我正在执行以下命令。

cd dirname; echo $?

这总是返回0cd 是否成功。这让我非常头疼。

如何在不读取错误消息的情况下检查 cd 是否成功。

答案1

原因可能是它cd不是像平常那样内置的 shell,而是

  1. 一个外壳函数
  2. 或别名

这可以通过检查type cd

(我将评论作为答案,以便可以“关闭”问题。)

答案2

我的愚蠢!

按照 HaukeLaging 的建议,我做了type cd。事实证明,它是某个 bash 函数的别名,该函数正在记录服务器上的cd用户活动。cd

我别名cd返回cd,脚本开始正常工作。我有一种短暂的诱惑,想先完全删除这个问题,因为我想我应该在这里回答它。我可能对其他人有用。

答案3

一种解决方案是在调用前添加 bash 内置“命令”前缀。这将强制使用实际的二进制文件“cd”

    root@ds002:~# command cd /foo
    -bash: cd: /foo: No such file or directory
    root@ds002:~# echo $?
    1

答案4

这样的事情我也经历过。正如所有其他人提到的那样,这是因为我的“cd”被一个函数包裹着。

无论如何,这应该可行。

command cd /mnt/c/nowhere && echo y # does not console "y"

相关内容