Como os outros explicaram, o diretório é alterado no processo filho do seu script, e não no processo terminal do qual o script é chamado. Depois que o processo filho morre, você está de volta ao terminal que está onde estava.
Várias alternativas:
1. Link simbólico
Coloque um link simbólico em sua casa no caminho longo que você deseja acessar com facilidade
$ ln -s /home/alex/Documents/A/B/C ~/pathABC
acesse o diretório com:
$ cd ~/pathABC
2. Alias
Coloque um alias em seu ~ / .bashrc:
alias pathABC="cd /home/alex/Documents/A/B/C"
(de aqui )
3. Função
Crie uma função que altere o diretório, a função seja executada no processo do seu terminal e, em seguida, altere seu diretório.
(de aqui )
4. Evite correr como criança
Crie seu script em vez de executá-lo. O fornecimento (feito por .
ou source
) faz com que o script seja executado no mesmo shell em vez de ser executado em sua própria sub-rede.
$ . ./pathABC
5. Variáveis de cd
Defina a opção cdable_vars
no seu ~/.bashrc
e crie uma variável de ambiente para o diretório:
shopt -s cdable_vars
export pathABC="/home/alex/Documents/A/B/C"
Então você pode usar cd pathABC
(de aqui )