Под «каталогом, из которого он был вызван», вы, похоже, подразумеваете его рабочий каталог. Вы можете изменить это внутри скрипта, используя, например, cdно, прежде чем сделать это, pwdраспечатаете его. Это также, вероятно, будет в переменной$PWD
Если после изменения вам понадобится исходный рабочий каталог, просто сохраните его в верхней части вашего скрипта (перед его изменением)
#!/bin/bash
initial_wd=`pwd`# ... do a lot of stuff ...# ⋮
cd "$initial_wd"
Если вы используете это, чтобы вернуться в каталог, в котором вы начали, смотрите также pushdи popd.
@jordanm Действительно, есть, но это не обязательно будет начальный рабочий каталог (например, если вы использовали cdдважды)
derobert
$ OLDPWD - это то, что мне нужно; Я запускаю bash-скрипты из CMD Prompt на Win7, и это была переменная среды, в которой находился каталог, из которого я запускал скрипт. Приветствия
Ответы:
Когда вы вызываете команду в оболочке, новый процесс наследует рабочий каталог родителя. Вот два способа получить рабочий каталог:
источник
Под «каталогом, из которого он был вызван», вы, похоже, подразумеваете его рабочий каталог. Вы можете изменить это внутри скрипта, используя, например,
cd
но, прежде чем сделать это,pwd
распечатаете его. Это также, вероятно, будет в переменной$PWD
Если после изменения вам понадобится исходный рабочий каталог, просто сохраните его в верхней части вашего скрипта (перед его изменением)
Если вы используете это, чтобы вернуться в каталог, в котором вы начали, смотрите также
pushd
иpopd
.источник
cd
дважды)