Qual é a diferença entre su -
e bash -l
?
Eu tenho esse problema:
:/etc/profile.d # su - Não é possível abrir a exibição "exibição padrão" Diretório: /root Qui, 28 de novembro 11:23:57 CET 2013
Agora tento descobrir por que essa mensagem ocorre.
:~ # sair :/etc/profile.d # bash -x -l + teste -f /proc/montagens + case "`/bin/ls -l /proc/$$/exe`" em ++ /bin/ls -l /proc/17167/exe + é=bash + leia -t 1 ar ...
Na segunda saída não tenho sinal da mensagem "não é possível abrir o display". Então qual é a diferença?
Responder1
O primeiro comando faz login como root; a opção -
significa, a partir de su Manpage
:
-l, --login Fornece um ambiente semelhante ao que o usuário esperaria se estivesse conectado diretamente.
O segundo comando, bash -l
, faznãofaça login como root. É verdade que a -l
opção significa (novamente do bash Manpage
):
-l Faça o bash agir como se tivesse sido invocado como um shell de login
No entanto, isso se refere a um different user
, neste caso você mesmo em vez de root. Assim, o bash -l
comando mantém o cookie mágico do MIT que permite o controle da sua sessão X, enquanto o su -c
não é capaz de fazer isso e, como você não possui o cookie mágico do MIT apropriado, não pode assumir o controle da sessão X.
Se você quiser contornar esse problema, insira esta declaração
export XAUTHORITY=/home/your_name/.Xauthority
no arquivo /root/.bashrc, e você poderá abrir GUIs como root mesmo quando estiver su'ing em vez de usar um shell de login adequado.