1

任意のディレクトリからシェル スクリプトを実行することは可能ですが、スクリプトは保存場所のディレクトリ コンテキストを保持します。

例えば:

/projects/a/bin/myscript.sh

プロジェクト/aiには次のものがあります:

- app
- code
- tmp
- bin
    - myscript.sh

myscript は、プロジェクトの app および code ディレクトリにいくつかの設定を行います。

どこからでもセットアップを実行できるようにしたい:

./bin/setup.sh

またはbinディレクトリ内で直接:

./setup.sh

ただし、コンテキストは、ファイルが配置されている場所ではなく、スクリプトが実行された場所から取得されているようです。

4

2 に答える 2

3

スクリプトへのパスは にあります$0。これにはスクリプト名自体が含まれているため、次のようにする必要があります

bin=$(dirname -- "$0")

あなたができるよりも:

  • 次のように、その変数を使用して他のスクリプトを参照するだけです。

    . "$bin/utils.sh"
    "$bin/../app/app"
    

  • ディレクトリに入ります。ただし、絶対パスにしない限り、コマンドラインで取得したパスが壊れます。

    cd "$bin"
    

正しく引用することを忘れないでください!

于 2013-10-01T12:19:45.427 に答える
0

次のようにスクリプト ディレクトリを取得できます。

SCRIPTDIR=`dirname "$0"`

それからあなたはすることができます

cd "$SCRIPTDIR"

残りのスクリプトをその場所から起動したかのように実行するためです。あなたの場所は変更されず、実行されたスクリプトの場所のみが変更されます。

あるいは、単に$SCRIPTDIRコマンドで使用することもできます。

于 2013-10-01T12:18:23.123 に答える