выполнение .sh и завершение в другом каталоге

6

Я знаю, что для этого есть простая команда, но я пытаюсь запустить файл.sh, который содержит строки вроде:

mkdir $filename
cd $filename

файл выполняется, но заканчивается в файле, в котором я начал. Я знаю, что есть простое ключевое слово, чтобы выполнить выполнение, чтобы оставить меня в директории $ filename, но я не могу найти его в Интернете. Я нашел его один раз раньше, но, похоже, не могу сделать это снова.

    
задан user126946 29.01.2013 в 07:21
источник

2 ответа

4

В соответствии с этим:

Ссылка

вы можете запустить свой скрипт, используя

. ./scriptname

, и он запустит сценарий оболочки с вашей оболочкой, а не вызывает подоболочку, как обычно.

    
ответ дан Max Sherman 29.01.2013 в 07:47
1

При выполнении сценария оболочки он эквивалентен запуску в другой оболочке. Выполнение ./script.sh равно sh script.sh , что может улучшить проблему для вас.

Чтобы запустить скрипт в текущем контексте оболочки, вам нужно использовать source или его псевдоним . , то есть source script.sh или . script.sh .

Самое простое решение для простой работы, как это, было бы создать псевдоним вместо скрипта, т.е. alias mkcd='mkdir dir; cd dir' или если вам нужно запустить произвольные каталоги, вы можете сделать mkcd() { mkdir ; cd } . Вы можете поместить любой из них в свои ~/.bashrc или ~/.bash_aliases .

    
ответ дан Tuminoid 29.01.2013 в 08:00