web-dev-qa-db-ja.com

ソースコマンドがshシェルに見つかりません

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

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

sh: 1: source: not found

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

106
Milad

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

93
choroba

Bourne Shell(sh)で、を使用します。ファイルを入手するコマンド

. filename
98
Guru
$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です

42
shlsy

sourceビルトインはバシズムです。代わりに、これを単に.として記述します。

e.g。

. $FILE

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

. ./$FILE

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

19
Travis Clarke

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

#!/bin/bash
7
mah

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

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

ジェンキンスの実行シェルの上部に次の行を追加するだけです

#!/bin/bash
7
Mojtaba Yousefi

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

Sudo -s source ./filename.sh

1
swati jain

#Jenkins execute Shellからsourceコマンドを呼び出そうとしたときに、このエラーに直面しました。

source profile.txtまたはsource profile.properties

sourceコマンドの代わりに使用するには、

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

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

0
GangaRam Dewasi

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

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

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

私のシェル環境変数も/ bin/bashに設定されています

test:
    $(Shell . ./my_script)

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

0
Gord Wait