Existem dois pontos:
- Problemas com a expansão do til
- Problemas com fornecimento versus execução.
Para a parte til, uma pergunta muito recente no superusuário foi sobre o mesmo problema ( link )
O til é expandido antes da variável, então o cd não consegue encontrar o caminho. Para superar isso, conduza o comando com eval
como tal:
eval cd "${APPLICATION_PATH}"
Infelizmente, quando você executa o script (quer dizer, se é chmod'ed para "+ x", chamando o caminho), você verá que o $ PWD não muda no "shell atual". No entanto, se você adicionar essa linha no final do script
ls
Você verá que ls
é executado no novo diretório de trabalho. Como vem?
A resposta está aqui ( link )
Short answer: sourcing will run the commands in the current shell process. executing will run the commands in a new shell process. still confused? then please continue reading the long answer.
Em breve, para alterar o $ PWD no shell atual, você deve "pesquisar" o script como tal:
source /path/to/script
ou
. /path/to/script
Um terceiro ponto: se não quiser mexer com source
ou .
, você pode definir um alias em seu ~ / .bashrc ( link ):
alias mycmd="source mycmd.sh"