Como outros explicaram, o diretório é alterado no processo filho do seu script, não no processo terminal do qual o script é chamado. Depois que o processo filho morre, você volta ao terminal que fica onde estava.
Várias alternativas:
1. Link simbólico
Coloque um link simbólico em sua casa no caminho longo que você deseja acessar facilmente
$ ln -s /home/alex/Documents/A/B/C ~/pathABC
em seguida, acesse o diretório com:
$ cd ~/pathABC
2. Alias
Coloque um alias no seu ~ / .bashrc:
alias pathABC="cd /home/alex/Documents/A/B/C"
( daqui )
3. Função
Crie uma função que altera o diretório, a função é executada no processo do seu terminal e pode alterar seu diretório.
( daqui )
4. Evite correr quando 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 seu próprio subshell.
$ . ./pathABC
( daqui e aqui )
5. vars compatíveis com CD
Defina a cdable_vars
opção 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
( daqui )