2016-10-21 3 views
0
とシェル

カピストラーノドクインタラクティブミナとカピストラーノ

http://capistranorb.com/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano/#

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はどのように処理しますか?彼らはできますか?

+0

リンクのドキュメントが正しいように見えます:「デフォルトではカピストラーノは常に非ログイン、非対話型シェルを割り当て」私を修正するが、私はこの部分に言及していたため –

答えて

2

私はRVMを使用していないが、私はあなたの質問を簡単に亀裂みましょう:

Q1を:私は欠けているドキュメントの別の部分がある場合を除き、あなたは誤引用されてきました。それは言う:

デフォルトでは、カリストラノは常にログインしていない非対話型シェルを割り当てます。

質問2:あなたはすることはできません。 Capistranoは、に完全に配置する必要があります。この場合、対話型シェルは必要ありません。

Q3:私はわからないんだけどどこがrbenvをのみ使用しましたので、これは、あります。しかし、私はそれを撃つだろう。 https://github.com/capistrano/rvmを使用してRVMをセットアップします。いったんそれを持っていれば、ここに記載されているコマンドに加えてコマンドがある場合:https://github.com/capistrano/rvm/blob/master/lib/capistrano/tasks/rvm.rake#L53append :rvm_map_bins, 'nameofexecutable'を使用して、RVMをコマンドに適用します。

Q4a/b:Q3を参照してください。

+0

感謝[http://capistranorb.com/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano/#どのように私はチェックすることができます](http://capistranorb.com/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano/#how-can-私が調べる) – Viren

関連する問題