sh
Shellを使用するスクリプトがあります。 source
コマンドを使用する行でエラーが発生します。 source
がsh
シェルに含まれていないようです。
シェルからsource
を明示的に実行しようとすると、次のようになります。
sh: 1: source: not found
どういうわけか「ソース」をインストールする必要がありますか? sh
のバージョンが間違っていますか?
/bin/sh
は通常、シェルを模倣しようとする他のシェルです。多くのディストリビューションはsh
に/bin/bash
を使用し、source
をサポートしています。ただし、Ubuntuでは、source
をサポートしない/bin/dash
が使用されます。ほとんどのシェルは、source
の代わりに.
を使用します。スクリプトを編集できない場合は、スクリプトを実行するシェルを変更してみてください。
Bourne Shell(sh)で、を使用します。ファイルを入手するコマンド
. filename
$ls -l `which sh`
/bin/sh -> dash
$Sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]
$ls -l `which sh`
/bin/sh -> bash
それでOKです
source
ビルトインはバシズムです。代わりに、これを単に.
として記述します。
e.g。
. $FILE
# OR you may need to use a relative path (such as in an `npm` script):
. ./$FILE
source
コマンドは、いくつかのシェルに組み込まれています。スクリプトがある場合は、次のように、最初の行で使用するシェルを指定する必要があります。
#!/bin/bash
この問題は、jenkins Execute Shellが/ bin/shを介してスクリプトを実行するために発生します
したがって、/ bin/shは「ソース」を認識しません
ジェンキンスの実行シェルの上部に次の行を追加するだけです
#!/bin/bash
sourceはbash組み込みコマンドであるため、sourceコマンドを実行するには、ルートとしてログインできます。
Sudo -s source ./filename.sh
#Jenkins execute Shellからsourceコマンドを呼び出そうとしたときに、このエラーに直面しました。
source profile.txt
またはsource profile.properties
sourceコマンドの代わりに使用するには、
. ./profile.txt
または. ./profile.properties
注: 2つのドットの間にスペースがあります(。)
Ubuntuのgnu Makefileで見つけました(/ bin/sh-> bash)
を使用する必要がありました。コマンド、および./プレフィックスでターゲットスクリプトを指定します(以下の例を参照)
sourceはこのインスタンスでは機能しませんでした。/bin/bashを呼び出す必要があるため、理由はわかりません。
私のシェル環境変数も/ bin/bashに設定されています
test:
$(Shell . ./my_script)
このサンプルにはタブ文字が含まれていないことに注意してください。スタック交換用にフォーマットする必要がありました。