sh
シェルを使用するスクリプトがあります。コマンドを使用する行でエラーが発生しますsource
。私のシェルsource
には含まれていないようです。sh
source
シェルから明示的に実行しようとすると、次のようになります。
sh: 1: source: not found
どういうわけか「ソース」をインストールする必要がありますか?のバージョンが間違っていませんsh
か?
/bin/sh
通常、シェルを模倣しようとしている他のシェルです。多くのディストリビューションがに使用/bin/bash
しsh
、をサポートしますsource
。ただし、Ubuntuでは、/bin/dash
をサポートしていないが使用されsource
ます。ほとんどのシェルは.
の代わりに使用しsource
ます。スクリプトを編集できない場合は、スクリプトを実行するシェルを変更してみてください。
Bourne shell(sh)では、を使用します。ファイルを調達するコマンド
. filename
特定のOS/環境(少なくともMac OS、Travis-CI、Ubuntu)では、これは次のようになっている必要があります。
. ./filename
(以下のAdrien Jolyのコメントへのクレジット)
$ls -l `which sh`
/bin/sh -> dash
$sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]
$ls -l `which sh`
/bin/sh -> bash
それなら大丈夫です
ビルトインはバシズムsource
です。.
代わりにこれを単純に書いてください。
例えば
. $FILE
# OR you may need to use a relative path (such as in an `npm` script):
. ./$FILE
この問題は、jenkinsExecuteShellが/bin/shを介してスクリプトを実行するために発生します
したがって、/ bin/shは「ソース」を認識しません
jenkinsのExecuteShellの上部に以下の行を追加する必要があります
#!/bin/bash
#Jenkinsのexecuteshellからsourceコマンドを呼び出そうとしたときに、このエラーが発生しました。
source profile.txt
また
source profile.properties
ソースコマンドの代わりに使用するのは、
. ./profile.txt
また
. ./profile.properties
注: 2つのドット(。)の間にスペースがあります
コマンドはいくつかのsource
シェルに組み込まれています。スクリプトがある場合は、次のように、最初の行で使用するシェルを指定する必要があります。
#!/bin/bash
UbuntuのgnuMakefileで見つけました(ここで/ bin / sh-> bash)
を使用する必要がありました。コマンド、および./プレフィックスを使用してターゲットスクリプトを指定します(以下の例を参照)
このインスタンスではソースが機能しませんでした。/bin/bashを呼び出す必要があるため、理由はわかりません。
SHELL環境変数も/bin/bashに設定されています
test:
$(shell . ./my_script)
このサンプルにはタブ文字が含まれていないことに注意してください。スタック交換のためにフォーマットする必要がありました。
sourceはbashの組み込みコマンドであるため、sourceコマンドを実行するには、Rootとしてログインできます。
sudo -s
source ./filename.sh
Ubuntuでは、sh scriptname.shを使用してファイルを実行する代わりに、を使用しました。scriptname.shとそれはうまくいきました!私のファイルの最初の行には次のものが含まれています。
#!/bin/bash
このコマンドを使用してスクリプトを実行します
.name_of_script.sh
これはあなたを助けるかもしれません、私が.profile
コマンド. .profile
で私のリロードしようとしていて、それが構文エラーを持っていたので、私はこのエラーを受け取りました
Bourneシェル(sh)は、PATHを使用してを検索しsource <file>
ます。ソースしようとしているファイルがパスにない場合は、「ファイルが見つかりません」というエラーが表示されます。
試す:
source ./<filename>