Conforme explicado nas outras respostas, você alterou o diretório, mas apenas dentro do sub-shell que executa o script . isso não afeta o shell pai.
Uma solução é usar funções bash em vez de um script bash ( sh
); colocando seu código de script bash em uma função. Isso torna a função disponível como um comando e, em seguida, isso é executado sem um processo filho e, portanto, qualquer cd
comando afeta o shell do chamador.
Funções do Bash:
Um recurso do perfil bash é armazenar funções personalizadas que podem ser executadas no terminal ou em scripts bash da mesma maneira que você executa aplicativos / comandos. Isso também pode ser usado como um atalho para comandos longos.
Para tornar seu sistema eficiente de funções amplamente, você precisará copiar sua função no final de vários arquivos
/home/user/.bashrc
/home/user/.bash_profile
/root/.bashrc
/root/.bash_profile
Você pode sudo kwrite /home/user/.bashrc /home/user/.bash_profile /root/.bashrc /root/.bash_profile
editar / criar esses arquivos rapidamente
Como :
Copie o código do seu script bash dentro de uma nova função no final do arquivo de perfil do bash e reinicie o terminal. Depois, você pode executar cdd
ou qualquer que seja a função que você escreveu.
Exemplo de script
Fazendo atalho para cd ..
comcdd
cdd() {
cd ..
}
ls atalho
ll() {
ls -l -h
}
ls atalho
lll() {
ls -l -h -a
}