현재 쉘이 >echo $shell
과 >ps $$
등으로 확인 된 경우, #! bin/tcsh
과 같은 shebang을 작성하고 제대로 실행하려면 해당 종류의 스크립트 만 사용해야합니까?Shebang과 현재 쉘의 관계
내 쉘이 항상 tcsh 쉘 이었지만 sh 셰번 즈 #! bin/sh
으로 스크립트를 만들었고 올바르게 실행했습니다. 내 스크립트는 forloops가 있는데, sh과 tcsh에서 다릅니다.
현재 쉘이 >echo $shell
과 >ps $$
등으로 확인 된 경우, #! bin/tcsh
과 같은 shebang을 작성하고 제대로 실행하려면 해당 종류의 스크립트 만 사용해야합니까?Shebang과 현재 쉘의 관계
내 쉘이 항상 tcsh 쉘 이었지만 sh 셰번 즈 #! bin/sh
으로 스크립트를 만들었고 올바르게 실행했습니다. 내 스크립트는 forloops가 있는데, sh과 tcsh에서 다릅니다.
셰번 라인이 실제로 #! bin/sh
인 경우 경로가 존재하지 않고 현재 쉘이 스크립트 실행을 인계 받으면서 제대로 작동 한 것입니다.
진법 라인의 경로를 유효한 절대 경로 #!/bin/sh
으로 수정하고 스크립트가 실패하기 시작할 것입니다.
걱정할 가능성이있는 세간 라인에 대한 자세한 내용은 http://www.in-ulm.de/~mascheck/various/shebang/을 참조하십시오.
그래서 현재 tcsh 셸에서 tcsh 쉐인으로 시작하는 스크립트가 필요하다고 말하고 있습니다. 권리? 그래서, shebang은 현재 쉘과 '동일'해야합니다. 이거 확인해 주시겠습니까? –
@eva_thess 아니, 그건 내가 말한 (또는 의미하는) 것이 아니다. 내가 말했던 것은 잘못된 경로 ('#! bin/sh'와 같이 상대 경로가 가장 좋음)가있을 때 shebang 메커니즘이 실패하고 현재 쉘이 스크립트 자체를 인계 받아 실행할 수 있다는 것입니다. Shebang 줄에 경로를 수정하면 작업이 시작되어 해당 셸이 실행됩니다. –
sh가 tcsh로 재 지정되었을 수도 있습니다. 'ls -l/bin/sh'로 확인하십시오. – fedorqui
미안하지만 리눅스에 익숙하지 않아 당신의 대답을 이해할 수 있을지 확신 할 수 없습니다. ls는 내용을 나열하는 것입니다. 맞습니까? 나는 그것을 시험해 보았습니다. "No such file or directory"가 있습니다 .Oops! 그래도 고마워! –