218

shシェルを使用するスクリプトがあります。コマンドを使用する行でエラーが発生しますsource。私のシェルsourceには含まれていないようです。sh

sourceシェルから明示的に実行しようとすると、次のようになります。

sh: 1: source: not found

どういうわけか「ソース」をインストールする必要がありますか?のバージョンが間違っていませんshか?

4

12 に答える 12

227

/bin/sh通常、シェルを模倣しようとしている他のシェルです。多くのディストリビューションがに使用/bin/bashsh、をサポートしますsource。ただし、Ubuntuでは、/bin/dashをサポートしていないが使用されsourceます。ほとんどのシェルは.の代わりに使用しsourceます。スクリプトを編集できない場合は、スクリプトを実行するシェルを変更してみてください。

于 2012-12-04T12:26:30.743 に答える
180

Bourne shell(sh)では、を使用します。ファイルを調達するコマンド

. filename

特定のOS/環境(少なくともMac OS、Travis-CI、Ubuntu)では、これは次のようになっている必要があります。

. ./filename

(以下のAdrien Jolyのコメントへのクレジット)

于 2012-12-04T12:03:55.643 に答える
62
$ls -l `which sh`
/bin/sh -> dash

$sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]

$ls -l `which sh`
/bin/sh -> bash

それなら大丈夫です

于 2014-01-07T06:16:01.100 に答える
45

ビルトインはバシズムsourceです。.代わりにこれを単純に書いてください。

例えば

. $FILE

# OR you may need to use a relative path (such as in an `npm` script):

. ./$FILE

https://wiki.ubuntu.com/DashAsBinSh#source

于 2017-07-13T19:38:09.703 に答える
14

この問題は、jenkinsExecuteShellが/bin/shを介してスクリプトを実行するために発生します

したがって、/ bin/shは「ソース」を認識しません

jenkinsのExecuteShellの上部に以下の行を追加する必要があります

#!/bin/bash
于 2016-01-25T09:06:02.997 に答える
10

#Jenkinsのexecuteshellからsourceコマンドを呼び出そうとしたときに、このエラーが発生しました。

source profile.txt また source profile.properties

ソースコマンドの代わりに使用するのは、

. ./profile.txt また . ./profile.properties

注: 2つのドット(。)の間にスペースがあります

于 2019-03-27T17:04:31.470 に答える
9

コマンドはいくつかのsourceシェルに組み込まれています。スクリプトがある場合は、次のように、最初の行で使用するシェルを指定する必要があります。

#!/bin/bash
于 2012-12-04T12:04:58.333 に答える
0

UbuntuのgnuMakefileで見つけました(ここで/ bin / sh-> bash)

を使用する必要がありました。コマンド、および./プレフィックスを使用してターゲットスクリプトを指定します(以下の例を参照)

このインスタンスではソースが機能しませんでした。/bin/bashを呼び出す必要があるため、理由はわかりません。

SHELL環境変数も/bin/bashに設定されています

test:
    $(shell . ./my_script)

このサンプルにはタブ文字が含まれていないことに注意してください。スタック交換のためにフォーマットする必要がありました。

于 2015-10-07T18:28:21.120 に答える
0

sourceはbashの組み込みコマンドであるため、sourceコマンドを実行するには、Rootとしてログインできます。

sudo -s source ./filename.sh

于 2017-08-15T08:42:53.533 に答える
-1

Ubuntuでは、sh scriptname.shを使用してファイルを実行する代わりに、を使用しました。scriptname.shとそれはうまくいきました!私のファイルの最初の行には次のものが含まれています。 #!/bin/bash

このコマンドを使用してスクリプトを実行します

.name_of_script.sh
于 2020-01-11T03:55:22.100 に答える
-3

これはあなたを助けるかもしれません、私が.profileコマンド. .profileで私のリロードしようとしていて、それが構文エラーを持っていたので、私はこのエラーを受け取りました

于 2016-11-11T22:10:25.300 に答える
-8

Bourneシェル(sh)は、PATHを使用してを検索しsource <file>ます。ソースしようとしているファイルがパスにない場合は、「ファイルが見つかりません」というエラーが表示されます。

試す:

source ./<filename>
于 2014-10-08T08:25:50.457 に答える