Você escreveu um script e funciona. Ele simplesmente não faz o que você quer, porque um script é executado em um shell separado do shell que o chama.
O shell no qual o script é executado faz exatamente o que o script diz; ele altera seu diretório de trabalho para ~/Downloads
. Não há mais nada para fazer, então sai. O diretório do shell de chamada não foi alterado.
Você não precisa aceitar minha palavra - você pode demonstrar isso adicionando ls
na próxima linha do seu arquivo dow
. O conteúdo do diretório ~/Downloads
(supondo que tenha algum) será listado quando você executar o comando (sem as cores usuais, que são fornecidas por um alias no seu ~/.bashrc
que as shells não interativas não leem) .
Para executar um script no shell atual, você pode usar o comando source
, que também pode ser escrito como . file
. Então, se você digitar
. dow
Seu shell atual mudará de diretório.
Ou, em vez disso, você pode definir um alias:
zanna@toaster:~$ alias dow='cd $HOME/Downloads'
zanna@toaster:~$ dow
zanna@toaster:~/Downloads$
Para torná-lo permanente, adicione a linha
alias dow='cd $HOME/Downloads'
ao seu arquivo ~/.bashrc
. Ele estará disponível toda vez que você executar um shell interativo.