Tengo acceso a sudo en el servidor de mis amigos, ejecutando centos-6.3, pero cuando intento ejecutar algunos comandos como sudo vim /var/www/html/index.htmlsi recibiera un error sudo: vim: command not found, puedo ejecutarlo sudo suy vim /var/www/html/index.htmlfunciona de la manera esperada.
echo $PATHy sudo echo $PATHambos producen:
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jared/bin
sudo which vim sin embargo produce:
which: no vim in (/sbin:/bin:/usr/sbin:/usr/bin)
He intentado agregar
export PATH=$PATH:/usr/local/bin
al /root/.bashrccual se solucionó el problema al usar sudo supero no solo sudo <command>.
¿Cómo llego sudo <command>al trabajo?

Respuestas:
Cuando se ejecuta
sudo, muchos sistemas están configurados para borrar el entorno de todos los valores no incluidos en la lista blanca y restablecer la variable PATH a un valor desinfectado.Encontrará el primero como
Defaults env_resety variosDefaults env_keep += "SOME_VARIABLE_NAME"en/etc/sudoers. La últimaPATHanulación "segura" se especifica comoDefaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin: elimine esta línea para eliminar este comportamiento cuandosudoing.La forma en que se maneja la variable de entorno se imprime cuando se ejecuta
sudo -Vcomoroot.Si no desea deshacerse de estos valores predeterminados, siempre puede especificar programas utilizando su ruta completa (
sudo /usr/local/bin/vim).Alternativamente, puede permitir que su cuenta
SETENVen elsudoersarchivo, por ejemplo:Esto le permite anular los valores predeterminados del entorno de esta manera:
sudo PATH=$PATH which vimya que la variable es interpretada por su shell antes de que se ejecute el comando, lo que da como resultado una herenciaPATH(que probablemente no incluirá,/sbinetc.).fuente
No hace lo que piensas.
$PATHes reemplazado por (su) shell antes de ejecutar el comando.Para lograr el comportamiento deseado, puede usar
sudo -i.Del hombre sudo :
fuente
Hasta que resuelva el problema con las rutas, use un nombre de ruta completo
fuente