Jak je uvedeno v této jemné odpovědi, systémy POSIX mají externí binární cd
kromě vestavěného pláště. V OS X 10.8 je to /usr/bin/cd
. Nemůžete jej používat jako vestavěné cd
protože se ukončí okamžitě po změně vlastního pracovního adresáře. K jakému účelu slouží?
Přijatá odpověď:
Slouží především k zajištění toho, aby byla POSIXová truhla nástrojů k dispozici uvnitř i vně shellu (viz zdůvodnění POSIX pro jejich vyžadování).
Pro cd
, to není příliš užitečné, ale všimněte si, že cd
mění adresáře, ale má další vedlejší účinky:vrací stav ukončení, který pomáhá určit, zda jste schopni chdir()
do tohoto adresáře nebo ne a zobrazí užitečnou chybovou zprávu vysvětlující, proč nemůžete chdir()
když nemůžete.
Příklad:
dirs_i_am_able_to_cd_into=$(find . -type d -exec cd {} ; -print)
Dalším potenciálním vedlejším efektem je automatické připojení adresáře.
Na několika systémech je většina externích příkazů pro standardní vestavěné shelly implementována jako symbolický odkaz na stejný skript, který dělá:
#! /bin/sh -
"${0##*/}" "[email protected]"
To znamená spustit shell a spustit v něm vestavěný.
Některé jiné systémy (jako GNU) mají nástroje jako skutečné spustitelné příkazy, což může vést k nejasnostem, pokud se chování liší od verze vestavěné do shellu.