Tengo un servidor Centos 5.5 que tiene mis propios comandos de alias para mi cuenta. Cuando lo hago sudo bash
, todavía puedo usar esos alias, no tuve que agregar los alias a la raíz .bashrc
.
Tengo otro servidor que es Centos 6.5. Pero cuando ejecuto sudo bash
, no usará mis alias del usuario en el que estoy conectado. ¿Alguien sabe dónde lo configuro para incluir los alias del usuario en el que estoy conectado cuando lo uso sudo bash
?
sudo sudo -V
salida yenv_keep
en la página de manual de sudoers.Defaults !always_set_home
yDefaults !env_reset
`Respuestas:
Agregue la siguiente línea a su ~ / .bashrc:
Del manual de bash
Entonces Bash solo verifica la primera palabra de un comando para un alias, cualquier palabra después de eso no se verifica. Eso significa que en un comando como sudo ll, bash solo comprueba la primera palabra (sudo) en busca de un alias, ll se ignora. Podemos decirle a bash que verifique la siguiente palabra después del alias (es decir, sudo) agregando un espacio al final del valor de alias.
fuente
sudo
comando, por ejemplosudo some_alias ...
, pero lo que OP pregunta es cómo hacer que los alias definidos para su propio usuario funcionen después de que él cambie a otro usuario usandosudo
. Digamos que hesome_alias
definido. Cuandosudo
aroot
usarsudo su
, se crea un nuevo entorno y que alias no está definido allí. Existe el-E
parámetro delsudo
comando que debería exportar el entorno, pero parece que los alias no son parte de él.Uso
sudo -E
, que exportará su entorno.fuente
sudo -E bash
. Cuando se usa consu
assudo -E su
, las cosas definidas en el usuario.bashrc
(alias, solicitud, etc.) no se conservan, aunque parece que las variables de entorno se conservan en ambos casos. No estoy seguro de cómo funciona exactamente esto.