2012-07-17 2 views
1

사용자별로 스크립트를 실행해야합니다. 해당 사용자의 쉘이 /etc/passwd 파일의 /script/script1으로 변경되었습니다. 스크립트를 실행하면 SHELL이/script/script1로 표시됩니다.사용자가 스크립트를 실행할 때 사용자 쉘을 무시하는 방법

+0

그냥 명령 줄에서 제거하지 않는 이유는 무엇입니까? –

+1

_Doctor, Doctor, 이렇게 머리에 맞을 때 아파요 ...? _ 그래서 GNU Parallel 없이도 작동합니다. 좋습니다. 왜 GNU 병렬을 사용해야합니까? 문제를 피하면서 사용하지 않는 것이 어떻습니까? 명령을 실행할 때 사용자의 로그인 셸을 어떻게 (다시) 사용하는지 보려면 GNU Parallel의 맨 페이지를 보았습니까? –

+0

설명서 페이지에는 SHELL에 대한 언급이 없습니다. 'sem'의 실제 호출을 보여줘야 할 수도 있습니다. 또한 Oracle의 두 가지 병렬 백업이 필요한 이유는 무엇입니까? –

답변

2

아, 이제 스크립트와 passwd 항목을 보았습니다. 무슨 일이 벌어지고 있는지 이해하고 있습니다. sem은 쉘을 사용하여 명령 행을 실행하려고합니다. semen 전에 printenv를 사용하면 SHELL = home/bkup :/script/script1이 표시됩니까?

그렇다면, 단지

문제가 해결되지 않으면 SEM

를 실행하기 전에 라인에 SHELL =/빈/bash는 (또는/빈/SH, 무엇이든)을 내보내는 경우, 우리의 printenv의 출력을 보여주십시오.

+0

@ user1497667 : 내가 제안한 것을 실제로 시도 했습니까? $ SHELL의 정의를 확인하거나 변경 하시겠습니까? –

+0

@Dhammika : 구체적이지는 않지만 솔라리스 사용자가 실행할 때 스크립트가 제대로 작동한다고 가정하고 스크립트에'printenv>/tmp/$ USER.env'를 추가하고 해당 사용자의/bin/ksh를 다음과 같이 변경하십시오. 사용자가 스크립트를 실행 한 다음 출력을 저장하고 사용자 쉘을 스크립트로 변경 한 다음 다시 실행하십시오. diff 두 printenv 출력 및보고 –