The idea is, that, when I am currently in the folder
home/Documents
, the above code printshome
- but is still in the directoryhome/Documents
Você não precisa de echo
porque pwd
imprime o que você deseja. Use isto:
(cd .. && pwd)
Existem duas coisas inteligentes aqui:
-
(whatever)
correwhatever
em uma subcamada. Secd
estiver dentro desses parênteses, ele alterará o diretório de trabalho atual da subshell, não o shell principal (atual). -
a && b
runsb
iffa
succeeded (retornou status de saída0
). Em geral, se você quiser que seu script usandocd
seja robusto, é bom verificar sempre secd
foi bem-sucedido. Isso evita a execução de outro (s) comando (s) em um diretório errado.
Observe que quando há links simbólicos envolvidos, você pode não obter o caminho esperado. Veja esta resposta do wiki da comunidade para detalhes.