"su -"와 "bash -l"의 차이점은 무엇입니까?

"su -"와 "bash -l"의 차이점은 무엇입니까?

su -이들 그리고 의 차이점은 무엇인가요 bash -l?

이 문제가 있습니다.

:/etc/profile.d # su -
디스플레이 "기본 디스플레이"를 열 수 없습니다
디렉터리: /root
2013년 11월 28일 목요일 11:23:57 CET

이제 이 메시지가 나타나는 이유를 알아내려고 합니다.

:~ # 로그아웃
:/etc/profile.d # bash -x -l
+ 테스트 -f /proc/mounts
+ 케이스 "`/bin/ls -l /proc/$$/exe`" in
++ /bin/ls -l /proc/17167/exe
+ is=배시
+ 읽기 -t 1 ar
...

두 번째 출력에는 "디스플레이를 열 수 없습니다"라는 메시지가 표시되지 않습니다. 그렇다면 차이점은 무엇입니까?

답변1

첫 번째 명령은 루트로 로그인합니다. 옵션은 -다음을 의미합니다 su Manpage.

-l, --login 사용자가 직접 로그인했을 때 기대하는 것과 유사한 환경을 제공합니다.

두 번째 명령인 bash -l은(는)~ 아니다루트로 로그인하세요. 옵션이 다음을 의미한다는 것은 사실입니다 -l(다시 에서 bash Manpage):

-l bash가 로그인 쉘로 호출된 것처럼 작동하도록 만듭니다.

그러나 이는 different user루트가 아닌 사용자 자신을 나타냅니다. 따라서 이 bash -l명령은 X 세션을 제어할 수 있는 MIT 매직 쿠키를 유지 관리하지만 이 명령은 su -c이를 수행할 수 없으며 적절한 MIT 매직 쿠키가 없기 때문에 X 세션을 제어할 수 없습니다.

이 문제를 해결하려면 다음 문을 삽입하세요.

  export XAUTHORITY=/home/your_name/.Xauthority

/root/.bashrc 파일에 저장하면 적절한 로그인 셸을 사용하는 대신 su'ing을 하는 경우에도 루트로 GUI를 열 수 있습니다.

관련 정보