Получить текущий каталог файла после вызова другим 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/
Другие вопросы по тегам