디렉토리를 변경하지 않고 루트 `su -l`로 로그인 셸을 가져옵니다.

디렉토리를 변경하지 않고 루트 `su -l`로 로그인 셸을 가져옵니다.

su -l모든 로그인 셸 파일을 읽지만 현재 있는 디렉터리를 변경하지 않는 유사한 기능을 실행하는 방법이 있습니까 ?

어떤 이유에서인지 Slackware Linux 패키지를 만들려고 합니다. 대부분 의 경우 su.​​sbclTeXsu -lsu

내가 ~/opt/haskell-stack-slackbuild.

$ pwd
/home/<user>/opt/haskell-stack-slackbuild

방금 실행하면 su동일한 디렉터리로 돌아가지만, 실행하면 su -l현재 있는 곳으로 이동하여 /root작업 중이던 디렉터리로 다시 이동해야 합니다.

$ su -l
# pwd
/root

답변1

.profile루트 셸에서 루트 소스 코드를 실행한 후 직접 루트 소스 코드를 가져오면 어떨까요 ?

$ su
Password: 
# . ~root/.profile
# 

물론, 루트 셸의 어디에서나 스크립트를 가져와 필요한 방식으로 루트 셸 환경을 복구하거나 변경할 수 있습니다.

su"셸 인수"가 명령줄에서 허용된다는 사실을 사용하여 원래 셸에서 직접 루트 셸에 다양한 설정을 삽입하는 방법이 많이 있습니다 . 다음은 루트 셸을 실행하기 위한 명령 지침을 제공하는 예입니다. su이 방법으로 루트의 구성 파일을 가져온 다음 해당 구성 파일의 환경을 사용하여 셸을 시작합니다(왜냐하면 exec에서 시작한 셸을 대체하기 때문입니다 su).

$ su -- root -c ". /root/.profile; exec /bin/sh" 
Password: 
# 

관련 정보