На этот вопрос уже есть ответ здесь:
Я попробовал следующий сценарий, чтобы облегчить себе смену каталогов на разные разделы жесткого диска. Но после его выполнения местоположение по умолчанию не меняется, но если я использую командную строку, изменение местоположения выполняется успешно, как показано ниже. Кто-нибудь может помочь?
john@X61s:~$ pwd
/home/john
john@X61s:~$ vi chdir
john@X61s:~$ ./chdir c
here ... 1
john@X61s:~$ pwd
/home/john
john@X61s:~$ cd /media/john/90F8-0AAE/
john@X61s:/media/john/90F8-0AAE$
Скрипт chdir следующий
#! /bin/bash
dir=$1
if [[ $dir = 'c' ]]; then
echo 'here ... 1'
cd /media/john/90F8-0AAE/
elif [[ $dir = 'd' ]]; then
echo 'here ... 2'
cd /media/john/E5A9-932C
elif [[ $dir = 'e' ]]; then
echo 'here ... 3'
cd /media/john/56de0045-aa0e-4b69-8270-44b4ec866fa2/
else
echo "$dir not defined"
exit
fi
Причина этого состоит в том, что сценарий работает в подоболочке; & тогда возвраты туда, где Вы были...
Попытка../chdir, чтобы заставить его работать в текущей оболочке.