Статус возврата `cd` всегда равен 0

Я выполняю следующую команду.

cd dirname; echo $? 

Это всегда возвращает 0 если из cd не удался. Это дает мне невероятную головную боль.

Как проверить, был ли cd успешным, не прочитав его сообщение об ошибке.

  • Вычислить разницу между двумя наборами нелинейных данных
  • В bash, как отложить интерполяцию переменной, которая имеет динамическую переменную в своей строке
  • Почему bash устанавливает $? (статус выхода) в ненулевое значение на Ctrl-C или Ctrl-Z?
  • Почему эти два варианта команд, которые похожи, дают разные результаты?
  • Сценарии Bash: использование forinloop с массивом
  • как перемешать символы строк в bash?
  • существует ли простой / чистый способ сделать «пустую логическую переменную» оценкой «false» на скриптах bash?
  • Возвращает ли bash что-либо при выполнении команды?
  • 3 Solutions collect form web for “Статус возврата `cd` всегда равен 0”

    Причина может заключаться в том, что cd не является оболочкой, встроенной, как обычно, но

    1. функция оболочки
    2. или псевдоним

    Это можно проверить с помощью type cd .

    (Я отвечу на комментарий, чтобы вопрос был «закрыт».)

    Эта проблема возникла из-за некоторой глупости. Как было предложено HaukeLaging, я type cd . Оказалось, что cd был псевдонимом некоторой функции bash, которая регистрировала активность пользователя cd на сервере.

    Я с aliased cd вернулся к cd и скрипт начал работать нормально. У меня было мимолетное искушение сначала удалить вопрос, хотя я должен ответить на него здесь. Я мог бы быть полезен кому-то другому.

    Одним из решений является префикс вызова w / bash builtin 'command'. Это заставит использовать фактический двоичный файл 'cd'

      root@ds002:~# command cd /foo -bash: cd: /foo: No such file or directory root@ds002:~# echo $? 1 
    Linux и Unix - лучшая ОС в мире.