「su -」和「bash -l」有什麼不同?

「su -」和「bash -l」有什麼不同?

su -和 和有什麼差別bash -l

我有這個問題:

:/etc/profile.d#su -
無法開啟顯示“預設顯示”
目錄:/根目錄
歐洲中部時間 2013 年 11 月 28 日星期四 11:23:57

現在我嘗試找出出現此訊息的原因。

:~ # 註銷
:/etc/profile.d # bash -x -l
+ 測試 -f /proc/mounts
+ 案例“`/bin/ls -l /proc/$$/exe`”
++ /bin/ls -l /proc/17167/exe
+ 是=bash
+ 讀取-t 1 ar

在第二個輸出中,我沒有任何「無法開啟顯示」訊息的跡象。那麼有什麼差別呢?

答案1

第一個指令讓您以 root 身分登入;該選項-意味著,來自su Manpage

-l, --login 提供類似於使用者直接登入時所期望的環境。

第二個命令bash -l, 執行不是以 root 身分登入。該選項確實-l意味著(再次來自bash Manpage):

-l 使 bash 的行為就像它已被呼叫為登入 shell 一樣

但是,這指的是different user,在本例中是您自己而不是 root。因此,此bash -l命令維護 MIT magic cookie,允許控制您的 X 會話,而 則無法su -c執行此操作,並且由於您沒有適當的 MIT magic cookie,因此您無法控制 X 會話。

如果您想解決此問題,請插入此語句

  export XAUTHORITY=/home/your_name/.Xauthority

在檔案 /root/.bashrc 中,即使您正在 su'ing 而不是使用正確的登入 shell,您也可以以 root 身分開啟 GUI。

相關內容