Eu tenho um servidor Centos 5.5 que possui meus próprios comandos de alias para minha conta. Quando o faço sudo bash
, ainda posso usar esses aliases, não precisei adicioná-los aos da raiz .bashrc
.
Eu tenho outro servidor que é o Centos 6.5. Mas quando executo sudo bash
, ele não usa meus apelidos do usuário no qual estou logado. Alguém sabe onde eu o configuro para incluir os aliases do usuário no qual estou conectado quando uso sudo bash
?
sudo sudo -V
saída eenv_keep
na página do manual sudoers.Defaults !always_set_home
eDefaults !env_reset
`Respostas:
Adicione a seguinte linha ao seu ~ / .bashrc:
No manual do bash
Portanto, o Bash verifica apenas a primeira palavra de um comando em busca de um alias, quaisquer palavras depois disso não são verificadas. Isso significa que em um comando como sudo ll, apenas a primeira palavra (sudo) é verificada pelo bash para um alias, ll é ignorado. Podemos dizer ao bash para verificar a próxima palavra após o alias (por exemplo, sudo) adicionando um espaço ao final do valor do alias.
fonte
sudo
comando, por exemplosudo some_alias ...
, mas o OP está perguntando é como fazer com que aliases definidos para seu próprio usuário funcionem depois que ele alterna para outro usuário usandosudo
. Digamos que eu tenhasome_alias
definido. Quando eusudo
aroot
usosudo su
, um novo ambiente é criado e que alias não é definido lá. Existe o-E
parâmetro dosudo
comando que deve exportar o ambiente, mas parece que os aliases não fazem parte dele.Use
sudo -E
, que exportará seu ambiente.fonte
sudo -E bash
. Quando usado comsu
assudo -E su
, as coisas definidas no usuário.bashrc
(aliases, prompt etc.) não são preservadas, mesmo que as variáveis de ambiente sejam preservadas nos dois casos. Não tenho certeza de como exatamente isso está funcionando.