カピストラーノドクインタラクティブミナとカピストラーノ
ssh [email protected] "[[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'"
Interactive
[email protected] $ ssh [email protected] "shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'"
Not login shell
カピストラーノ状態が「対話型と非ログインシェル」で遠隔@ sshの私を上のコマンドを実行することを言います。非常によく、ここに私のポイントです。私は、私が代わりに二重引用符の今、この
echo $-
# If not running interactively, don't do anything
case $- in
*i*) echo 'Interactive';;
*) echo 'Non Interactive';;
esac
のように見える私の.bashrcので簡単なテストを、("
)私は単一引用符でカピストラーノ例を包んだ(追加でした何
'
)私は二重引用符は、現在のシェルの式を展開すると感じたので、(私の場合には、それは私のラップトップtty
端末の)
結果:
ssh [email protected] '[[ $- == *i* ]] && echo "Interactive" || echo "Not interactive"'
hBc
Non Interactive
Not interactive
Question 1:
- Capistranoのドキュメントは正しいですか?。上記の結果を見ると、コマンドは非対話型でログインしていないシェルで実行されているようです。
Question 2:
私が正しい場合(質問1の項で)、対話型シェルでコマンドを実行するにはどうすればよいですか。私は-t
のオプションの下でtty
割り当てを強制するという印象を受けました。しかし、それはどちらも役に立たない。
ssh [email protected] -t '[[ $- == *i* ]] && echo "Interactive" || echo "Not interactive"'
hBc
Non Interactive
Not interactive
Connection to remote closed.
Question 3:
ここに元の質問にしてください。私は自分の展開用のものにMinaを使用しています。今、minaの展開中にrvmはロードされません。私のbashがbashrcに人々がこの問題を回避するにはどうすればよい
# bashrc
case $- in #when mina load bashrc it's a non-interactive shell.
*i*) ;;
*) return;;
esac
source ~/.rvm/scripts/rvm # this is never gets executed
Question 4(a)
に以下の定義を持ってい
理由?。確かに、ファイルの先頭にあるrvmソースのロードを助けますが、私は別の答えを探しています。
Question 4 b
:CapistranoとMinaはどのように処理しますか?彼らはできますか?
リンクのドキュメントが正しいように見えます:「デフォルトではカピストラーノは常に非ログイン、非対話型シェルを割り当て」私を修正するが、私はこの部分に言及していたため –