Cuando ejecuto mi programa de forma interactiva, funciona bien:
ssh somehost
$ ~/some/path/somescript.py
Cuando ejecuto mi programa sobre ssh directamente, no funciona. La variable PYTHONPATH
no está establecida porque .bashrc
no tiene su origen.
ssh somehost ~/some/path/somescript.py
Si corro ssh somehost 'source ~/.bashrc; ~/some/path/somescript.py'
, funciona bien.
Pero esto último no funcionaría para otras personas, por ejemplo, usar tcsh y no tener ninguno ~/.bashrc
).
¿Cuál es el comando para ejecutar una cosa a través de ssh en otro host que funciona para todos los shells?
bash
ssh
environment-variables
remote
bzdjamboo
fuente
fuente
bash
, luego de TI fuentes.bash_profile
o.profile
para un inicio de sesión interactivo, y.bashrc
para un inicio de sesión no interactiva. Si su shell de inicio de sesión se invoca bash comosh
o ash o ksh,.profile
busca un inicio de sesión interactivo y nada para un inicio de sesión no interactivo.Respuestas:
No existe un archivo estándar por usuario que se ejecute para inicios de sesión no interactivos. Debe hacer que el programa sea autónomo, de modo que pueda encontrar sus dependencias sin depender de variables de entorno no predeterminadas, o bien establecer explícitamente el entorno, generalmente con
No debería establecer variables de entorno en
.bashrc
: este archivo está destinado a shells interactivos y se lee en cada instancia de bash. Las variables de entorno deben establecerse.profile
, que se leen cuando inicia sesión. Aparte del número muy pequeño de personas que no usan un shell de estilo Bourne como su shell de inicio de sesión,.profile
funciona para todos, ya sea que usen bash o zsh o csh o pescado de forma interactiva. Consulte también Diferencia entre .bashrc y .bash_profile , ¿Qué archivos de configuración deben usarse para configurar variables de entorno con bash? .Dicho esto, hay una manera de obtener un script cada vez que inicie sesión en ssh con una clave en particular. Consulte ¿Hay alguna forma de enviar información de configuración de shell cuando SSHing a un host? , sh archivos de inicio sobre ssh .
fuente
Tuve el mismo problema, pero para mí la solución fue diferente. Mi usuario no estaba configurado para usar bash como shell, sino que usaba zsh como shell, por lo tanto, los archivos bash dot no se ejecutaron al iniciar sesión. Abra / etc / passwd con un editor de texto y busque su nombre de usuario y qué shell utiliza:
Así es como se ve mi entrada de usuario. Observe que dice / bin / zsh en lugar de / bin / bash. Para zsh, el archivo de puntos correcto es ~ / .zprofile. Su contenido se ejecutará cada vez que inicie sesión con ssh.
fuente