Como alterar o diretório usando o script

10

Eu tenho esse script

#!/bin/bash
cd /home/user/somedir
pwd

funciona como esperado, mas eu gostaria que esse script me transportasse para / home / user / somedir, mas permaneço no mesmo diretório.

Como escrever um script que me transportará (no gnome-terminal) para / home / user / somedir?

UAdapter
fonte
2
possível duplicata de Por que "cd" não funciona em um shell script?
4114 muru

Respostas:

14

Você precisa do sourceseu script. Caso contrário, ele será executado em um subshell separado, alterando o diretório de trabalho do subshell, mas não do shell em que você o executa.

Para obtê-lo:

. myfile.sh

ou

source myfile.sh

Você pode ler mais aqui

danjjl
fonte
Eu apenas adicionaria isso ... UAdadapter, se você estivesse executando o script shelll como sh myfile.sh ou ./myfile.sh, ele seria executado como danjil descrito. Qualquer uma das opções de danjil deve funcionar para você.
amigos estão dizendo sobre itnet7
3

Use exec bashno final

Um script bash opera em seu ambiente atual ou em seus filhos, mas nunca em seu ambiente pai.

No entanto, essa pergunta geralmente é feita porque alguém deseja ser deixado em um prompt do bash em um determinado diretório após a execução de um script bash de outro diretório.

Se for esse o caso, simplesmente execute uma instância do bash filho no final do script:

#!/bin/bash
cd /home/user/somedir
exec bash
Serge Stroobandt
fonte