Jak wyjaśniono w innych odpowiedziach, zmieniłeś katalog, ale tylko w podpowłoce, która uruchamia skrypt . nie wpływa to na powłokę nadrzędną.
Jednym z rozwiązań jest użycie funkcji bash zamiast skryptu bash ( sh
); poprzez umieszczenie kodu skryptu bash w funkcji. Dzięki temu funkcja jest dostępna jako polecenie, a następnie zostanie wykonana bez procesu potomnego, a zatem każde cd
polecenie wpłynie na powłokę wywołującą.
Funkcje Bash:
Jedną z funkcji profilu bash jest przechowywanie niestandardowych funkcji, które można uruchamiać w terminalu lub w skryptach bash w taki sam sposób, jak uruchamiasz aplikację / polecenia, może to również służyć jako skrót do długich poleceń.
Aby twoja funkcja była wydajna, musisz skopiować ją na końcu kilku plików
/home/user/.bashrc
/home/user/.bash_profile
/root/.bashrc
/root/.bash_profile
Możesz sudo kwrite /home/user/.bashrc /home/user/.bash_profile /root/.bashrc /root/.bash_profile
szybko edytować / tworzyć te pliki
Jak :
Skopiuj kod skryptu bash do nowej funkcji na końcu pliku profilu bash i zrestartuj terminal, możesz następnie uruchomić cdd
dowolną funkcję, którą napisałeś.
Przykład skryptu
Tworzenie skrótu do za cd ..
pomocącdd
cdd() {
cd ..
}
skrót
ll() {
ls -l -h
}
skrót
lll() {
ls -l -h -a
}