Cada vez que inicio sesión en mi servidor Linux me gustaría que varios comandos se ejecuten automáticamente (establecer algunas variables, cambiar la ubicación, etc.)
Esto debe hacerse en el inicio de sesión del usuario, no en el inicio del sistema.
¿Cómo puedo configurarlo para hacer esto?
man bash
).Respuestas:
Pon los comandos en
~/.bashrc
. Cualquier cosa allí se ejecuta cada vez que inicia sesión.Si necesita que los comandos solo se ejecuten cuando inicie sesión a través de ssh (pero no cuando inicie sesión físicamente), probablemente podría probar la presencia de la
SSH_CONNECTION
variable de entorno y solo ejecutar los comandos si encuentra que existe.fuente
Simplemente ponga esto en ~ / .bashrc o /etc/bash.bashrc si desea esto para todos los usuarios:
fuente
screen
, podría usar su respuesta y ponerla enscreen
lugar del eco. El problema con eso es que al finalizar la sesión de pantalla volverá al indicador SSH en lugar de cerrar sesión. Sin embargo, solo escribir este comentario me dio la respuesta: agregue ellogout
comando después delscreen
comando.exec command
reemplazará el shell actual con lo que sea que ejecute.Alternativamente, puede especificar un comando que se ejecutará durante la invocación de
ssh
:El último comando en la lista debería iniciar una sesión interactiva en su shell preferido. Si tiene muchos comandos para ejecutar, considere crear un archivo de script en su servidor SSH.
fuente
En realidad,
~/.ssh/rc
es un lugar adecuado para que usted agregue el comando para ejecutar cuando inicia sesión, en lugar de cualquier usuario del sistema.fuente
Iniciar sesión en el host remoto después de ejecutar los comandos pasados al host remoto:
.bashrc
en host remotoLo deja en el indicador de bash en el host remoto (si no hay errores)
$ ssh user@host "bash -lc cmd; cmd; ..."
-l opción lo convierte en un shell de inicio de sesión (por ejemplo, ejecutar .bashrc)
-c opción proporciona el comando explícito bash se ejecutará
fuente