Come indicato in questa bella risposta, i sistemi POSIX hanno un cd
binario esterno oltre alla shell incorporata. Su OS X 10.8 è /usr/bin/cd
. Non puoi usarlo come il cd
integrato poiché esce immediatamente dopo aver cambiato la propria directory di lavoro. A cosa serve?
Risposta accettata:
Serve principalmente per assicurarsi che la cassetta degli attrezzi POSIX sia disponibile sia all'interno che all'esterno di una shell (consultare la logica POSIX per richiederli).
Per cd
, non è estremamente utile, ma nota che cd
cambia directory ma ha altri effetti collaterali:restituisce uno stato di uscita che aiuta a determinare se sei in grado di chdir()
in quella directory o meno, e genera un utile messaggio di errore che spiega perché non puoi chdir()
quando non puoi.
Esempio:
dirs_i_am_able_to_cd_into=$(find . -type d -exec cd {} ; -print)
Un altro potenziale effetto collaterale è il montaggio automatico di una directory.
Su alcuni sistemi, la maggior parte dei comandi esterni per i built-in della shell standard sono implementati come collegamento simbolico allo stesso script che fa:
#! /bin/sh -
"${0##*/}" "[email protected]"
Questo è avviare una shell ed eseguire il built-in in essa.
Alcuni altri sistemi (come GNU), hanno utilità come veri comandi eseguibili che possono creare confusione quando il comportamento differisce dalla versione incorporata della shell.