1

(shell is bash)のようなステートメントを実行したい

/# source /workspace/scripts/script.sh
/workspace/scripts# source script.sh

script.sh内で、独自の場所を取得したいと思います。(script.shはPATH変数には含まれません)

readlink -f $0スクリプトを実行するときにこれを使用できますが、スクリプトを実行すると同じことが機能しませんsource

コマンドを実行する場所にソリューションを依存させたくありません。source(そうでなければpwd十分だったでしょう)

これは可能ですか?

4

2 に答える 2

4

すべての場合の100%で場所を確実に見つけることは不可能です。bash
を使用する場合、最善の策はさまざまです。このリンクは、このトピックに非常に役立ちます。$BASH_SOURCE

于 2012-05-01T19:06:20.793 に答える
0

はパス内にあるためscript.sh、を使用してフルパスを取得できるはずですwhich。したがって、スクリプトでは、$0がフルパスでない場合は、を実行できますwhich $0

carabiner$ cat ~/bin/test.sh
#!/bin/sh

echo test - $0 $1
which $0

carabiner$ source test.sh
test - test.sh
test.sh is /home/zigdon/bin/test.sh
于 2012-05-01T19:07:33.977 に答える