2013-10-04 2 views
1

Я хочу выполнить некоторые команды через терминал. У меня есть скрипт для выполнения команд. Некоторые команды работают, но при попытке изменить каталог его не меняется. Там нет ошибки во время выполнения, что script.The скрипт, который я сделал исполняемым и упомянуть ниже:Как сменить каталог через файл сценария

make clean 
make 
cd /home/user 

сохранить это как script.sh и сделать его исполняемым

+0

у вас есть соответствующие разрешения, чтобы войти в этот каталог? – hek2mgl

+2

Что заставляет вас думать, что это не работает? Вы действительно хотите изменить рабочий каталог в своей оболочке, выполнив скрипт? –

+1

Вы ожидаете, что рабочий каталог будет изменен в оболочке, выполняющей упомянутый сценарий? если да: это не так, как это работает. – mnagel

ответ

6

Текущий рабочий каталог является собственностью процесс. Каждый процесс имеет независимое значение для своего рабочего каталога. Ваш скрипт работает правильно: он изменяет текущий рабочий каталог процесса оболочки, который его выполняет.

Если вы хотите, чтобы ваша интерактивная оболочка меняла рабочий каталог, вы должны указать . Вы можете сделать это путем «поиска» вашего скрипта в своей интерактивной оболочке. «Sourcing» означает чтение скрипта и выполнение команд оболочкой, которая ее запускает. Это противоречит «выполнению» сценария, в котором запускается отдельный процесс оболочки и выполняется содержимое скрипта.

Вы можете указать сценарий, используя команды source или .. Как это:

source script.sh 

или это:

. script.sh 
+0

Большое спасибо spbnick, его правильная работа .... –

Смежные вопросы