環境変数と設定は、実際にセッションにログインしたときにのみ読み取るように見えるため、対話型プロンプトで実行する必要があるBashスクリプトがあります。例は次のとおりです。
いいね
me@client:~$ ssh box
user@box:~$ /usr/local/bin/myscript
悪い
me@client:~$ ssh box "/usr/local/bin/myscript"
単一行SSHコマンドで実行されていることを確認するためにスクリプトで使用できるBash-fuはありますか?
答え1
標準入力に接続されている端末があることを確認できます(tty
コマンドが実行する操作)。スクリプトに次の行を追加します。
if ! tty >/dev/null; then
echo "Must be run from a tty"
exit 1
fi
正しく実行されない場合、スクリプトはエラーで終了します。
$ ssh badabing ~/scripts/a.sh
Must be run from a tty
$ ssh badabing
terdon@badabing ~ $ ~/scripts/a.sh
Works!