Jak zmienić katalog za pomocą skryptu

10

Mam ten skrypt

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

działa zgodnie z oczekiwaniami, ale chciałbym, aby ten skrypt przeniósł mnie do / home / user / somedir, ale pozostaję w tym samym katalogu.

Jak napisać skrypt, który przeniesie mnie (w gnome-terminal) do / home / user / somedir?

UAdapter
źródło

Odpowiedzi:

14

Musisz do sourceswojego skryptu. Jeśli nie, zostanie uruchomiony w osobnej podpowłoce, zmieniając katalog roboczy podpowłoki, ale nie powłoki, w której ją uruchomisz.

Aby go zdobyć:

. myfile.sh

lub

source myfile.sh

Możesz przeczytać więcej tutaj

Danjjl
źródło
Chciałem tylko to dodać ... UAdadapter, jeśli uruchamiasz skrypt shelll, taki jak sh myfile.sh lub ./myfile.sh, działałby tak, jak opisał Danjil. Każda z opcji Danjil powinna działać dla Ciebie.
itnet7
3

Użyj exec bashna końcu

Skrypt bash działa w bieżącym środowisku lub w środowisku potomnym, ale nigdy w środowisku macierzystym.

Jednak często zadawane jest to pytanie, ponieważ po wykonaniu skryptu bash z innego katalogu chce się pozostać w wierszu polecenia bash.

W takim przypadku po prostu uruchom podrzędną instancję bash na końcu skryptu:

#!/bin/bash
cd /home/user/somedir
exec bash
Serge Stroobandt
źródło