Як пояснено в інших відповідях, ви змінили каталог, але лише в підрозділі, який запускає сценарій . це не впливає на батьківську оболонку.
Одне рішення - використовувати функції bash замість bash script ( sh
); помістивши ваш код скрипта bash у функцію. Це робить функцію доступною як команда, і тоді вона буде виконуватися без дочірнього процесу, а отже, будь-якогоcd
команда вплине на оболонку абонента.
Функції Bash:
Однією з особливостей профілю bash є зберігання спеціальних функцій, які можна запустити в терміналі або в bash-скриптах так само, як ви запускаєте додаток / команди, це також може бути використане як ярлик для довгих команд.
Щоб широко функціонувати в системі, вам потрібно буде скопіювати її в кінці декількох файлів
/home/user/.bashrc
/home/user/.bash_profile
/root/.bashrc
/root/.bash_profile
Ти можеш sudo kwrite /home/user/.bashrc /home/user/.bash_profile /root/.bashrc /root/.bash_profile
швидко редагувати / створювати ці файли
Як :
Скопіюйте код скрипта bash всередині нової функції в кінці файлу профілю bash та перезапустіть термінал, потім можна запустити cdd
або будь-яку функцію, яку ви написали.
Приклад сценарію
Створення ярлика для cd ..
зcdd
cdd() {
cd ..
}
я ярлик
ll() {
ls -l -h
}
я ярлик
lll() {
ls -l -h -a
}