Что не так с этим простым скриптом? Я просто хочу написать скрипт, который меняет мой каталог:
A. Я помещал ниже команды в файл, где его имя меняет каталог в каталоге /home/alex,
#!/bin/sh
cd /home/alex/Documents/A/B/C
echo HelloWorld
B. также я сделал chmod +x pathABC. На терминале, когда я нахожусь в каталоге /home/alex, я запускаю ./pathABC.
Но выход - это просто ./pathABC , и текущий каталог остается без изменений. Я имею в виду, что мой каталог остается как /home/alex, а не ходит в /home/alex/Documents/A/B/C.
Итак, где не так?
Когда вы запускаете скрипт в терминале, выполняется дочерний процесс. В этой дочерней программе, т. Е. Ваш скрипт изменится на любой указанный каталог. Но в родительском процессе, т.е. где вы запускаете скрипт, все еще находится в старом пути. ИЛИ просто мы можем сказать:
The scope of cd command is only for child process not parent
Вы делаете ошибку мышления. Хотя текущий терминал остается в том же каталоге, сценарий переместился в новый каталог.
Вы могли видеть это, создав еще один скрипт в каталоге terminal и добавив его в ваш скрипт после изменения каталога:
#!/bin/sh
cd /home/alex/Documents/A/B/C&&./another_script.sh (if it is executable)
Скрипт (второй) будет запускаться из нового каталога.
HelloWorld
- это только результат скрипта. [ ! d6]