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

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

cd dirname; echo $? 

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

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

  • Команда Bash для источника файла в другом каталоге?
  • Почему этот обходной путь OSX / BSD / GNU не работает
  • backspace не работает при запуске c ++-программы
  • Как найти файл, в котором определена функция bash?
  • Запустите команду перед любой командой терминала
  • Чтение ячеек в файле csv
  • Как вы помните последний (n-й?) Переданный аргумент предыдущей команды, которую вы использовали с 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 - лучшая ОС в мире.