2016-10-21 11 views
0

카피 스트라 노 박사는 말한다대화 미나와 쉘 및 카피 스트라 노

http://capistranorb.com/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano/#의 명령이 실행되는 원격 "대화 형 및 비 로그인 쉘"@ 나를 ssh를하는 것이

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 

카피 스트라 노 상태입니다. 아주 잘하지만 여기에 내 요점이 있습니다.

내가이 무슨 짓을, 나는 작은 따옴표의 카피 스트라 노의 예를 감싸 대신 큰 따옴표 (")의 지금이

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: - 카피 스트라 노의 문서 맞습니까?. 위의 결과를 보면 위의 명령은 비동기 및 로그인이 아닌 쉘에서 실행되는 ssh를 통해 실행됩니다.

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:. 내 배포 물건에 미나를 사용하고 있습니다. 이제 미니어 배포 중에는 절대로드되지 않습니다.

이유는 내 배쉬

# 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) 어떻게 사람들이이 문제를 해결 않습니다 bashrc에에서 사용되는 용어의 정의는 다음이있다? 확실하게 파일 상단에있는 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#L53, 할 append :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- i-check) – Viren