Finalmente resolví esto con un alias:
alias sudo='sudo PATH="$PATH" HOME="$HOME" LD_LIBRARY_PATH="$LD_LIBRARY_PATH"'
Asegúrese de utilizar comillas simples, de modo que las variables se expandan en el momento de la invocación, no en el momento en que se define el alias.
Esta:
- conserva HOME (que de lo contrario se establece en / root)
- conserva la RUTA (que de lo contrario se establece en una ruta 'segura' en los líderes)
- conserva el valor actual de LD_LIBRARY_PATH (que de lo contrario queda en blanco)
(Se puede ver lo que las cosas se ponen establece en la: sudo bash -c "echo $HOME"
)
Estoy trabajando con controladores personalizados y siempre tengo que sudo mis programas de prueba para acceder al controlador. No quiero instalar versiones de prueba de bibliotecas en el área del sistema, así que uso LD_LIBRARY_PATH para configurar un directorio de prueba específico según sea necesario. No puedo establecer un LD_LIBRARY_PATH fijo, necesito poder cambiarlo y mantener la configuración actual. Preservar PATH y HOME me da acceso a mi entorno de trabajo: scripts y estructura de directorios.
Este alias evita tener que otorgar permisos generales en sudoers ... y aparentemente no hay solución para LD_LIBRARY_PATH independientemente de la configuración de sudoers de todos modos. No funciona sudo dentro de los scripts, pero pueden codificarse según sea necesario.
~/.bashrc