Как указано в этом прекрасном ответе , системы POSIX имеют внешний двоичный файл cd
в дополнение к встроенной оболочке. На OS X 10.8 это так /usr/bin/cd
. Вы не можете использовать его как встроенный, cd
так как он выходит сразу после изменения своего рабочего каталога. Какой цели это служит?
cd-command
command
posix
Кодзиро
источник
источник
/usr/bin/cd
только встроенной оболочки./bin/cd
однако./bin/cd
ни другого/usr/bin/cd
.Ответы:
Он служит главным образом для того, чтобы убедиться, что сундук с инструментами POSIX доступен как внутри, так и снаружи оболочки (см. Обоснование POSIX ).
Потому
cd
что это не очень полезно, но обратите внимание, чтоcd
изменяет каталоги, но имеет другие побочные эффекты: он возвращает состояние выхода, которое помогает определить, можете ли вы войтиchdir()
в этот каталог или нет, и выводит полезное сообщение об ошибке, объясняющее, почему вы не можетеchdir()
когда ты не можешь.Пример:
Другим потенциальным побочным эффектом является автомонтирование каталога.
В некоторых системах большинство внешних команд для стандартных встроенных оболочек реализовано в виде символической ссылки на тот же сценарий, который выполняет:
То есть запустить оболочку и запустить встроенную в нее.
Некоторые другие системы (например, GNU) имеют утилиты как настоящие исполняемые команды, которые могут привести к путанице, когда поведение отличается от встроенной версии оболочки.
источник
cd
команду. Может быть полезно для мониторинга доступности автоматически монтируемой удаленной файловой системы или, возможно, перед тем, как сделать с ней что-то критическое по времени.Тот факт , встроенная команда не компакт - диска доступна в основном в связи с POSIX требования для всех регулярных встроенных команд , чтобы быть отозваны по EXEC команд семьи
env
,find
,nice
,nohup
,time
и вxargs
сочетании с тем , некоторые из этих команд не сами реализованы в виде встроенных команд.Это не имеет особого смысла,
cd
хотя объединять его с этими командами совершенно бессмысленно. Вот более или менее надежные примеры:источник
break, :, continue, . , eval, exec, exit, export, readonly, return, set, shift, times, trap, unset
они не будут иметь отношения к внешним командам, аcd
являются обычными встроенными, в которых есть несколько документированных вариантов использования в качестве команды.В дополнение к проверке, соответствует ли путь доступному каталогу,
cd
исполняемый файл обработает и используетCDPATH
переменную и выведет абсолютный путь к разрешенному каталогу, если он был использован успешно.Это очень редко полезно, но спасает повторную реализацию той же логики для поиска подходящих каталогов. Конкретный вариант использования - это поиск первого существующего каталога с определенным именем под несколькими возможными родителями.
cd
также процессыOLDPWD
дляcd -
, но это менее конкретно полезно, поскольку переменная окружения уже будет доступна.источник