シェルスクリプトからシェルスクリプトを実行する方法

シェルスクリプトからシェルスクリプトを実行する方法

私はMac OSXでbashを使用しています。

私はというシェルファイルを持っていますmyshell.sh。私はそれをたくさんするために使います。

以下を含む Entry.sh ファイルがあります。

# content of entrance.sh
./myshell.sh arg1 arg2
./myshell.sh arg3 arg4

しかし、実行するとentrance.shエラーが発生します。

./entrance.sh: line 2: myshell.sh: command not found

myshell.sh を直接実行できます。

どうですか?

ベストアンサー1

./myshell.shスクリプトが次のmyshell.sh場所にあることを示します。現在の目次。このスクリプトを他の場所で実行すると機能しません。あなたできるフルパスを使用してください。しかし、この場合、唯一の合理的な解決策は次のとおりです。

  1. myshell.shあなたの場所に場所を追加します$PATHmyshell.sh実際にはどこにでも呼び出す必要があります)。したがって、PATH="$PATH":/dir/of/myshell外部スクリプトの先頭に追加します。

  2. myshell.shどこからでもアクセスできるようにどこかに配置します(システムの他のすべての実行可能ファイルと同様)。その/usr/local/bin可能性が最も高いです。通常役に立つ場合にのみ、このスクリプトを使用してください。

スクリプトがそのディレクトリのローカルファイルに依存している場合(他の場所で呼び出すと競合が発生して破損する可能性があります)、そのファイルを現在の形式にしておく必要があります(実際に呼び出すべきではない場所で呼び出すのを防ぎます)。あるいは、cdスクリプト内で正しい場所に移動するために使用されます。注意してください。シェルスクリプトで絶対パスを使用します。cd問題が発生し、もはや失敗すると問題が発生しやすくなります。ディレクトリをエスケープして、親ディレクトリ全体を乱雑にすることができます。..cd

ほとんどの場合、ソリューション#1をお勧めします。

おすすめ記事