No OS X 10.8 eu estava olhando para minha pasta / bin e achei que o cd não estava lá, mas sim na pasta / usr / bin. Por que é que? Do FHS ( Filesystem Hierarchy Standard . Eu sei que / bin deve conter binários essenciais, ou seja, aqueles necessários quando nenhum outro sistema de arquivos é montado. CD não é essencial o suficiente? (A propósito, parece que o comando "su" também está em / Agora, eu sei que o OS X não segue estritamente o FHS, mas existe uma razão para essa localização diferente dos binários?
macos
terminal
filesystem
ggrim
fonte
fonte
Respostas:
cd
é um shell embutido e precisa ser construído para funcionar. Se ele fosse executado como um comando normal, ele seria executado como um subprocesso, mudaria o diretório desse subprocesso e então sairia ... não tendo nenhum efeito no diretório do shell pai.Quanto a
su
: a distinção fundamental entre / bin e / usr / bin é que / usr / bin pode estar em um sistema de arquivos diferente da raiz e, portanto, não estar disponível no início do processo de inicialização; assim, / bin (e / sbin) deve conter todos os comandos necessários no início do processo de inicialização. No OS X,su
aparentemente não é necessário durante a inicialização.fonte
cd
ser um shell embutido significa que ele é armazenado dentro do / bin / bash executável? (desculpe, eu entendo o significado da sua resposta, eu só não sei como um shell embutido é implementado)bash
código-fonte. BTW, não é apenas bash - cada shell shell (zsh, dash, etc) tem que tercd
como um builtin, ou iria falhar pela razão que eu dei. Você pode estar interessado nesta pergunta anterior no Unix & Linux SE .cd
como um programa interno vs.