Jak wspomniano w tej dokładnej odpowiedzi , systemy POSIX mają wbudowany zewnętrzny plik binarny cd
oprócz wbudowanej powłoki. W OS X 10.8 jest to /usr/bin/cd
. Nie możesz używać go jak wbudowanego, cd
ponieważ wychodzi on natychmiast po zmianie własnego katalogu roboczego. Do czego to służy?
cd-command
command
posix
kojiro
źródło
źródło
/usr/bin/cd
, tylko wbudowaną powłokę./bin/cd
jednak./bin/cd
ani/usr/bin/cd
.Odpowiedzi:
Służy przede wszystkim do upewnienia się, że skrzynka narzędzi POSIX jest dostępna zarówno wewnątrz, jak i na zewnątrz powłoki (patrz uzasadnienie POSIX, aby je wymagać ).
Bo
cd
to nie jest niezwykle przydatne, ale należy pamiętać, żecd
zmienia katalogi, ale ma inne skutki uboczne: zwraca status wyjścia, który pomaga ustalić, czy możesz przejśćchdir()
do tego katalogu, czy nie, i wyświetla przydatny komunikat o błędzie wyjaśniający, dlaczego nie możeszchdir()
kiedy nie możesz.Przykład:
Innym potencjalnym efektem ubocznym jest automatyczne montowanie katalogu.
W kilku systemach większość zewnętrznych poleceń dla standardowych wbudowanych powłok jest zaimplementowana jako dowiązanie symboliczne do tego samego skryptu, który:
To jest uruchom powłokę i uruchom wbudowane w nią.
Niektóre inne systemy (takie jak GNU) mają narzędzia jako prawdziwe polecenia, które mogą prowadzić do nieporozumień, gdy zachowanie różni się od wbudowanej wersji powłoki.
źródło
cd
polecenia zewnętrznego . Może być przydatny w monitorowaniu dostępności zdalnie montowanego systemu plików, a może przed zrobieniem czegoś krytycznego czasowo.Fakt non wbudowanego polecenia cd dostępna jest w istocie ze względu na POSIX wymogiem dla wszystkich regularnych builtins być wpłacone przez Exec poleceń rodzinnych
env
,find
,nice
,nohup
,time
ixargs
przyczyniły się do faktu, niektóre z tych poleceń nie są sami realizowanego jako poleceń wbudowanych.Nie ma to jednak większego sensu,
cd
ponieważ połączenie go z tymi poleceniami jest zupełnie bezcelowe. Oto jednak mniej lub bardziej dające się obronić przykłady:źródło
break, :, continue, . , eval, exec, exit, export, readonly, return, set, shift, times, trap, unset
byłyby nieistotne jako polecenia zewnętrzne, podczas gdycd
są to zwykłe polecenia wbudowane, które mają kilka udokumentowanych przypadków użycia jako polecenia.Oprócz sprawdzenia, czy ścieżka odpowiada dostępnemu katalogowi,
cd
plik wykonywalny przetworzy i użyjeCDPATH
zmiennej oraz wydrukuje bezwzględną ścieżkę rozstrzygniętego katalogu, jeśli został on pomyślnie użyty.Jest to bardzo okazjonalnie przydatne, ale zaoszczędziłoby ponownego wprowadzania tej samej logiki do wyszukiwania pasujących katalogów. Konkretnym przypadkiem użycia jest znalezienie pierwszego istniejącego katalogu określonego nazwiska pod kilkoma możliwymi rodzicami.
cd
przetwarza równieżOLDPWD
zacd -
, ale to jest mniej konkretnie użyteczne, gdyż zmienna będzie już dostępny.źródło