125 votos

¿Cómo puedo poner $RUTA de acceso que `ssh usuario@host comando` funciona?

Me parece que no puede establecer un nuevo programa de $RUTA de acceso que se utiliza cuando la ejecución de comandos a través de ssh user@host command. He intentado añadir export PATH=$PATH:$HOME/new_path ~/.bashrc y ~/.perfil en la máquina remota, pero la ejecución ssh user@host "echo \$PATH" muestra que el cambio no ha sido elegido (muestra /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games). El equipo remoto se está ejecutando Ubuntu 8.04.

Estoy seguro de que podría hack en /etc/profile, pero eso no es una solución limpia y sólo funciona cuando uno tiene acceso de root.

172voto

singpolyma Puntos 5586

Como grawity dijo, ~/.bashrc es lo que usted desea, ya que es abastecido por no interactivos de no inicio de sesión de conchas.

Espero que el problema tiene que ver con el defecto de Ubuntu ~/.archivo bashrc. Por lo general, comienza con algo como esto:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

Quiere poner nada para que no sean interactivos conchas antes de esta línea.

30voto

grawity Puntos 6338

¿Tienes un ~/.bash_login o ~/.bash_profile?

Bash en el modo interactivo busca estos archivos y los usos de la primera ya existente, en este orden:

  1. ~/.bash_profile
  2. ~/.bash_login
  3. ~/.profile

Así que si usted tiene un ~/.bash_profile, entonces lo que sea que cambios hacer para ~/.profile quedará invisible.

Bash en el modo no interactivo lee el archivo ~/.bashrc (que también es a menudo la fuente era de las secuencias interactivas.)

ssh parece estar usando el modo no interactivo, así que ~/.bashrc debería ser suficiente. Al tener este tipo de problemas, yo suelo añadir un par de echo para ver qué archivos se están ejecutando.

20voto

Hasturkun Puntos 18653

ssh documentación dice:

Si el comando se especifica, se ejecuta en el host remoto en lugar de un shell de inicio de sesión.

cual es la razón por la adición a la bashrc archivos no funciona. usted, sin embargo, tiene las siguientes opciones:

  1. Si el PermitUserEnvironment opción se establece en el sshd de configuración, usted puede agregar su configuración de RUTA para ~/.ssh/environment

  2. ssh remotemachine 'bash -l -c "somecommand"'

6voto

Chas. Owens Puntos 40887

Siempre se puede decir:

ssh remotemachine 'export PATH=wedontneedastinkingpath; echo $PATH'

2voto

Indie Puntos 179

Sólo tenía el mismo problema que yo, resuelto con:

ssh user@remotehost PATH=\$HOME/bin:\$PATH\; remote-command

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X