Conforme mencionado nesta resposta , os sistemas POSIX possuem um binário externo cd
além do shell embutido. No OS X 10.8 é /usr/bin/cd
. Você não pode usá-lo como o embutido, cd
pois ele sai imediatamente após alterar seu próprio diretório de trabalho. Que finalidade serve?
cd-command
command
posix
kojiro
fonte
fonte
/usr/bin/cd
, apenas o shell embutido./bin/cd
no entanto./bin/cd
nem/usr/bin/cd
.Respostas:
Ele serve principalmente para garantir que o baú de ferramentas POSIX esteja disponível dentro e fora de um shell (consulte a lógica do POSIX para solicitá-los ).
Por
cd
isso, isso não é tremendamente útil, mas observe quecd
altera os diretórios, mas tem outros efeitos colaterais: ele retorna um status de saída que ajuda a determinar se você podechdir()
ou não acessar esse diretório e exibe uma mensagem de erro útil explicando por que você não podechdir()
quando você não pode.Exemplo:
Outro efeito colateral potencial é a montagem automática de um diretório.
Em alguns sistemas, a maioria dos comandos externos para os recursos internos do shell padrão é implementada como um link simbólico para o mesmo script que:
Isso é iniciar um shell e executar o built-in nele.
Alguns outros sistemas (como o GNU), têm utilitários como verdadeiros comandos executáveis, o que pode levar a confusões quando o comportamento difere da versão interna do shell.
fonte
cd
comando externo . Pode ser útil para monitorar a disponibilidade de um sistema de arquivos remoto montável automaticamente, ou talvez antes de fazer algo crítico com o tempo.O fato de um comando cd não embutido está disponível é essencialmente devido ao POSIX exigência para todos os builtins regulares para ser resgatados pelos comandos da família exec
env
,find
,nice
,nohup
,time
exargs
combinado ao fato de alguns desses comandos não estão sendo si implementado como builtins.Isso não faz muito sentido,
cd
pois combiná-lo com esses comandos é inútil. Aqui estão alguns exemplos mais ou menos sustentáveis:fonte
break, :, continue, . , eval, exec, exit, export, readonly, return, set, shift, times, trap, unset
seriam irrelevantes como comandos externos, enquantocd
é um componente regular que possui alguns casos de uso documentados como comando.Além de verificar se um caminho corresponde a um diretório acessível, o
cd
executável processará e usará aCDPATH
variável e imprimirá o caminho absoluto do diretório resolvido se tiver sido usado com êxito.Isso é útil apenas ocasionalmente, mas economizaria a reimplementação da mesma lógica para procurar diretórios correspondentes. Um caso de uso concreto é encontrar o primeiro diretório existente de um nome específico sob vários pais possíveis.
cd
também processaOLDPWD
paracd -
, mas que é menos concretamente útil uma vez que a variável de ambiente já estaria disponível.fonte