Получить каталог, из которого был вызван скрипт


10

У меня есть сценарий doSmthв /usr/bin. Можно ли получить и распечатать каталог, из которого был вызван скрипт ?

Так что если я позвоню, doSmthс /home/meвыхода будет /home/me.


На каком языке?
Иордания

Ухх, в баш :)
Примож Краль

Ответы:


11

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

echo "$PWD" # variable
pwd         # builtin command

1

Под «каталогом, из которого он был вызван», вы, похоже, подразумеваете его рабочий каталог. Вы можете изменить это внутри скрипта, используя, например, cdно, прежде чем сделать это, pwdраспечатаете его. Это также, вероятно, будет в переменной$PWD

Если после изменения вам понадобится исходный рабочий каталог, просто сохраните его в верхней части вашего скрипта (перед его изменением)

#!/bin/bash
initial_wd=`pwd`

# ... do a lot of stuff ...
# ⋮

cd "$initial_wd"

Если вы используете это, чтобы вернуться в каталог, в котором вы начали, смотрите также pushdи popd.


3
В bash также есть "$ OLDPWD".
Иордания

@jordanm Действительно, есть, но это не обязательно будет начальный рабочий каталог (например, если вы использовали cdдважды)
derobert

$ OLDPWD - это то, что мне нужно; Я запускаю bash-скрипты из CMD Prompt на Win7, и это была переменная среды, в которой находился каталог, из которого я запускал скрипт. Приветствия
Даррен Бишоп
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.