Как объяснено в других ответах, вы изменили каталог, но только внутри вложенной оболочки, которая запускает сценарий . это не влияет на родительскую оболочку.
Одним из решений является использование функций bash вместо сценария bash ( 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
}