Comencé a hacer esta pregunta pero la respondí mientras la tenía abierta. Voy a publicar esta pregunta, seguir con mi solución y dejarla abierta a otras posibles soluciones.
<
historia de fondo>
Soy un usuario de tmux y vim. Me gusta el trabajo remoto de vim, ya que no tengo que preocuparme de que las máquinas de desarrollo de Ubuntu se apaguen cuando una película flash me da pánico en el núcleo. Ejecutar tmux significa que los archivos abiertos me están esperando después de reiniciar y puedo continuar desde donde lo dejé. He tenido problemas con vim ejecutándose en una sesión tmux cuando me conecto así:
ssh example.com -t 'tmux attach'
UTF-8 genera problemas que no surgen cuando se bombardea normalmente y solo se adjunta a una sesión tmux manualmente.
<
/ historia de fondo>
Por lo tanto, quiero un método reutilizable para iniciar algo en el inicio de sesión ssh, que no afecte a ninguna de las otras cosas que configuré en mi .zshrc
(o su .bashrc
si todavía usa bash) que pueden ser necesarias para mi entorno de desarrollo, eso no aparece cuando ocasionalmente estoy trabajando localmente en la misma máquina.
fuente
ssh example.com -t 'tmux attach'
es porque tenga problemas para cargar mi entorno, sino porque he tenido problemas con la visualización de caracteres UTF-8; Este problema no existe cuando se conecta de la manera convencional. Es por eso que esta pregunta se trata de ejecutar scripts inmediatamente después de conectarse a través de SSH..profile
? Supuse que el problema se debía a configuraciones regionales configuradas incorrectamente en la máquina de destino, que se solucionó/etc/profile
o que.profile
solucionó. El problema del entorno local probablemente se puede solucionar con más información.Anteriormente aconsejé configurar
PermitUserEnvironment yes
y agregar una variable de entorno en su~/.ssh/environment
hasta que Eli Heady intervino con una mejor sugerencia en los comentarios a continuación.Abra su
.zlogin
(bash:.bash_profile
etc.) y ponga lo siguiente:Inspiración tomada de: ¿Cómo solicito la entrada en un script de shell de Linux?
Tenga en cuenta que he usado el
.zlogin
archivo, pero podría usar su.zshrc
archivo, pero me gusta mantener mis archivos de puntos ordenados y lo separa para poder usarlo en otras máquinas.Reemplace la pregunta con algo apropiado para usted y reemplace
MY_SSH_CONNECTION="yes" tmux attach
con lo que desee ejecutar en ese punto.Tenga en cuenta cómo se establece el script
MY_SSH_CONNECTION="yes"
antestmux attach
de pasarlo a tmux, ya que también abrirá un shell que accederá al mismo script anterior y evitará cualquier recurrencia.fuente
if [[ "$SSH_CONNECTION" != "" ]]
debería hacerlo.Yo mismo, agrego esto a mis archivos .bash_profile:
Esto me da algo de tiempo para abortar volver a conectar o crear una sesión de pantalla. No funcionará en formatos 'ssh system command' (que no llama al perfil ~ /.*). Una función de shell está configurada para volver a conectar si aborto.
fuente
Podrías considerar correr
y ejecuta tu sesión de terminal allí. Luego puede separar (
^A^D
) y volver a conectar más tarde (desde un cliente diferente también) Hará que el problema con la inicialización no interactiva desaparezca ya que la pantalla mantiene sesiones de terminal interactivas completas (opcionalmente, también shells de inicio de sesión,man screen
(1) o^A?
)fuente
-t 'tmux attach'
tengo problemas con vim que no están presentes normalmente. Es por eso que la verdadera pregunta es sobre la ejecución de scripts en ssh connect en lugar de la gestión de pantalla / sesión. Disculpas por no ser más claro en mi preguntaPara hablar específicamente sobre los problemas de UTF-8, si agrega
Y
$LANG
está configurado en algo así comoen_US.UTF-8
en el extremo local y su sshd en el extremo remoto permite laSendEnv
directiva (conAcceptEnv
insshd_config
), el tmux en el otro extremo debería cumplirla. Tuve este problema por un tiempo y fue difícil de solucionar.fuente
Si desea que se ejecute cada vez que se conecte, simplemente puede agregarlo
tmux attach
a la parte inferior de su~/.profile
máquina remota.fuente