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。