'su'를 사용할 때 bash 경로 문제


4

우분투에서 루시드 린스 , 나는 노력하고있어.

su -l user -c "foo.sh args"

어디에 foo.sh 실행 가능한 bash 스크립트입니다. PATH 세트 ~user/.bashrc. 불행히도, 이것은 찾을 수 없기 때문에 실패합니다. foo.sh. 만약 내가 su -l user 수동 입력 foo.sh args 명령 줄에서 제대로 작동합니다. PATH 확장은 다음에서 수행됩니다. ~user/.bashrc 내가 상관없이 일하는 것처럼 보입니다. su-l 대화 형으로 표시되지만 명령을 지정하면 작동하지 않는 것입니다.

왜 이것이지, 그리고 내가 그걸 어떻게 극복 할 수 있는지에 대한 생각?

답변:


2

셸을 비대화 형 로그인 쉘로 시작하므로 프로세스가 처리됩니다. ~/.profile 하지 ~/.bashrc. 당신은 당신의 PATH 그 파일에 포함 시키거나 둘 다 출처 인 공통 파일에서 수행하십시오. 어떤 사람들 / 배포판은 하나의 시작 파일을 다른 하나의 소스 파일로 설정하지만, 나는 이것을 권장하지 않습니다.

에서 man bash:

bash가 --login 옵션을 사용하여 대화식 로그인 쉘 또는 비대화 형 쉘로 호출 될 때, 먼저 bash가 com-          파일이 존재하면 / etc / profile 파일에서 mands를 찾습니다. 읽고 나서          그 파일은 ~ / .bash_profile, ~ / .bash_login, ~ / .profile을 찾는다.          순서대로 읽고, 첫 번째 명령을 읽고 실행합니다.          존재하고 읽을 수 있습니다. --noprofile 옵션은          셸이이 동작을 금지하기 시작했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.