root로 실행해야하는 bash 쉘 스크립트가 있습니다. 사용자가이를 실행하면 루트 암호를 묻는 메시지가 표시되고 스크립트는 서브 쉘에서 재실행됩니다. ./$0 &bash su sudo 전에 원래 스크립트를 시작한 사용자 찾기
'John'이라는 사용자가 스크립트를 실행한다고 가정 해 보겠습니다. 루트 암호를 제공 한 후 스크립트는 루트로 다시 실행되지만 스크립트 자체에서 누가 원래 스크립트 (John)를 시작했는지 어떻게 알 수 있습니까? 지금 내가 나중에 참조 할 수있는 원래 시작 관리자로 파일을 버리고 있지만 이것은 추한 것입니다.
다른 옵션으로는 프로세스 목록을 사용하고 있지만 다시 한 번 훌륭한 솔루션이 있어야합니다.
GNU bash는 버전 4.2.45 (2) -release (x86_64에-슬랙웨어 - 리눅스 GNU)
'$$'은 스크립트의 소유자가 아닌 현재 쉘의 프로세스 ID입니다. 스크립트를 실행하는'sudo' 명령의 프로세스 ID가 필요합니다. – chepner
까지 subshell 에코 $ $ 부모 쉘의 프로세스 ID를 반환합니다 기억 ... 나는이 순간에 이것을 확인하기 위해 리눅스 터미널에 액세스 할 수 없습니다 .. 아니면 에코 $ 할 수 있습니다 부모 프로세스 ID를 얻기위한 PPID –
방금 온라인 터미널에서 시도했습니다!/bin/bash; echo $$; (echo $$) .. 둘 다 같은 값을 반환했습니다. –