リモートシステムで実行するには、次のスクリプトtest.shファイルを実行する必要があります。
変数.txt:
name=stackexchange
テスト.sh:
#!/bin/bash
source ./variables.txt
echo $name
走る:
ssh -i "auth.key" user@host 'bash -s' < test.sh
ただし、次のエラーが発生します。
bash: line 2: ./variables.txt: No such file or directory
ベストアンサー1
そのシェル./variables
に存在しないファイルをインポートするように他のシステムのシェルに指示します。pwd
段階的に見てみると、次のようになります。
このコマンドはsshを介して接続し、ローカルで行を送信します。
test.sh
ssh -i "auth.key" user@host 'bash -s' < test.sh
接続を介してリモート シェルを起動し、
ssh
次の行を取得します。#!/bin/bash
この行に対するリモートシェルの解釈は、シェルが何であるかによって異なります。ほとんどのシェルはこの行をコメントとして扱います。シェルがある場合、sh
リモートシェルはできません。bash
なぜなら、shebang 行はスクリプトファイル内でのみ有効であり、スクリプトは実行可能なビットセットを必要とするからです。source ./variables.txt
これで、リモートシェルはvariables.txt
現在の作業ディレクトリのファイルからデータをインポートするように指示されます。ファイルが存在しない場合、シェルでエラーが発生します。あなたの場合、シェルはBashで、エラーは次のようになります。bash: line 2: ./variables.txt: No such file or directory
echo $name
空のため、$name
端末には空行のみが印刷されます。
variables.txt
これを直接確認するには、ソースとは異なる行を使用してリモートホームディレクトリにファイルを配置します。例:
name=remotehost
以前のようにテストスクリプトを実行します。