Получить текущий каталог файла после вызова другим bash-скриптом
Итак, у меня есть один скрипт bash, который вызывает другой скрипт bash. Второй скрипт находится в другой папке.
script1.sh:
"some_other_folder/script2.sh"
# do something
script2.sh:
src=$(pwd) # THIS returns current directory of script1.sh...
# do something
Во втором сценарии есть строка src=$(pwd)
и так как я вызываю этот скрипт из другого скрипта в другом каталоге, $(pwd)
возвращает текущий каталог первого скрипта.
Есть ли способ получить текущий каталог второго сценария, используя простую команду в этом сценарии, не передавая параметр?
Благодарю.
2 ответа
Решение
Пожалуйста, попробуйте это, чтобы увидеть, помогает ли это
loc=`dirname $BASH_SOURCE`
Я верю, что вы ищете ${BASH_SOURCE[0]}
, readlink
а также dirname
(хотя вы можете использовать подстановку строк bash, чтобы избежать dirname)
[jaypal:~/Temp] cat b.sh
#!/bin/bash
./tp/a.sh
[jaypal:~/Temp] pwd
/Volumes/Data/jaypalsingh/Temp
[jaypal:~/Temp] cat tp/a.sh
#!/bin/bash
src=$(pwd)
src2=$( dirname $( readlink -f ${BASH_SOURCE[0]} ) )
echo "$src"
echo "$src2"
[jaypal:~/Temp] ./b.sh
/Volumes/Data/jaypalsingh/Temp
/Volumes/Data/jaypalsingh/Temp/tp/