2012-08-23 2 views
0

나는 tcsh 인터프리터를 로그인 쉘로 시작하는 bash 스크립트를 작성 중이며 my_command을 실행한다. tcsh 맨 페이지에는 로그인 쉘을 시작하는 두 가지 방법이 있다고합니다. 첫 번째는 다른 인수없이 /bin/tcsh -l을 사용하는 것입니다. 왜냐하면 쉘이 my_command을 실행해야하기 때문입니다. 두 번째는 대시 (-)를 0 번째 인수로 지정하는 것입니다.제로 인수를 지정하는 방법

이제 -l 옵션을 bash는 exec 명령은 정확히이 일을하고 다음 작품을 완벽하게 사실 : 내가 돌아올 스크립트를 필요로하기 때문에 내가 exec을 사용할 수 없습니다 ... 제외

#!/bin/bash 
exec -l /bin/tcsh -c my_command 

나중에 다른 일을해라! 그렇다면 exec을 사용하지 않고 /bin/tcsh의 0 번째 인수로 -을 어떻게 지정할 수 있습니까?

답변

1

당신은 포함하는 래퍼 (w.sh) 스크립트를 작성할 수 있습니다

#!/bin/bash 
exec -l /bin/tcsh -c my_command 

및 메인 스크립트에 w.sh을 실행합니다.

+0

명령 파일 이름 확장을주는 것이 가장 좋은 방법이되지 않는다 - 이것은 단지해야한다'w'가 아닌'w.sh'은, 그것이 지금까지 C에 다시 않다면 또는 두통을 만드는 (setuid 비트를 허용하는 예를 들어, 스크립트에있을 수없는 설정). –

2

exec 명령을 스크립트의 하위 셸로 묶을 수 있습니다.

#!/bin/bash 
(exec -l /bin/tcsh -c my_command) 
# ... whatever else you need to do after the command is done 
+0

매우 매끄러운, 감사합니다! – JCOidl

관련 문제