私はCygwinを更新しましたが、新しいバージョンの.bashrc
上部に次の行が含まれています。
echo "BEFORE TEST"
# If not running interactively, don't do anything
[[ "$-" != *i* ]] && return
echo "AFTER TEST"
インタラクティブに実行しない限り、何もする必要はないことを知っていますが、次のssh
コマンドを使用するかどうかについて質問があります。
ssh localhost pwd
私はこれを見る:
BEFORE TEST
したがって、明らかに[[ "$-" != *i* ]]
テストに失敗して返されます。明らかにssh localhost pwd
これは簡単な例ですが、.bashrc
コマンドを実行すると常に実行できるようにしたいですssh
。私の実際の自動化はこのcygwinインスタンスに対してリモートでコマンドを実行しますが、パス.bashrc
(myで設定)が正しく設定されていないため失敗します。
また、このテストが実際に何をしているのかを説明できる人はいますか?何ですかi
?$-
それはどういう意味ですか?
ベストアンサー1
pwd
(あなたの場合)で単一のコマンドを実行すると、インタラクティブシェルではssh
なく、動作が正しいと思います。
inではなくinPATH
またはに設定する必要があります。~/.profile
~/.bash_profile
~/.bashrc
見つかったとおりbash(1)
マニュアルページ:
パラメータ (...) 特殊パラメータ シェルはいくつかのパラメータを特別に扱います。これらのパラメータは 情報提供のみを目的として割り当てることはできません。 (...) - 呼び出し時に指定された現在のオプションフラグに展開されます。 set 組み込みコマンドまたはシェル経由 (例:-iオプション)
したがって、i
インクルードはオプションが使用されたことを$-
意味します-i
(または対話的にシェルによって自動的に設定されます)。