Si solo desea enviar la PS1
variable, y no contiene una '
(comilla simple), intente:
ssh targethost -t "PS1='$PS1'; exec bash"
Sin embargo, el local .bashrc
puede sobrescribir PS1
(gracias a Dennis Williamson por señalar esto).
Hay formas de transmitir variables de entorno a través de ssh , pero generalmente están deshabilitadas en la configuración del servidor. Si la PermitUserEnvironment
directiva está habilitada en la configuración del servidor y cada usuario tiene su propio par de claves (sí, es posible que no tenga tanta suerte), puede agregar environment="PS1=…"
a la línea ~/.ssh/authorized_keys
correspondiente a su clave.
Si desea mantener su propia configuración en una cuenta de usuario compartida, puede crear su propio directorio de archivos de configuración y establecer la HOME
variable de entorno para que apunte a ese directorio.
ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/
Cree enlaces simbólicos en el mrstatic.home
directorio que apunten a la entrada correspondiente en el directorio principal cuando desee compartir un archivo con los otros usuarios.
Luego, inicie sesión con
ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`
Si está dispuesto a modificar el control remoto .profile
(u otro archivo de inicialización), probablemente pueda automatizar su configuración. Muchos sitios permiten LC_*
variables de entorno (normalmente se usan para la configuración regional). Si se cumplen ambas condiciones, puede establecer una variable que no se use realmente para configuraciones regionales, por ejemplo LC_USER
, en el lado del cliente, y probarla en el servidor .profile
.
(Por supuesto, las cuentas compartidas son una mala idea, pero me doy cuenta de que es posible que no esté en condiciones de cambiar esa situación).
Gilles 'SO- deja de ser malvado'
fuente
"PS1='$PS1' bash -i"
(y por qué noexec
, también)?PS1
que se sobrescribiera durante el inicio del shell. Sin ejecutivo: durante las pruebas en mi sistema no parecía haber ninguna diferencia, sin proceso adicional..bashrc
es probable que el local sobrescribaPS1
.Coloque su solicitud de PS1 en ~ / .ssh / environment y la sesión ssh lo llevará a cada host que inicie sesión. A mí me funciona con openssh 4.3p2.
fuente
PermitUserEnvironment
, lo cual está desactivado de manera predeterminada.puede especificar variables de entorno en el lado del cliente y si el servidor ssh lo permite (marque man sshd-config), estas variables se copian en la sesión cuando inicia sesión en la máquina.
por lo tanto, tendría que configurar el .bashrc en el servidor para verificar una PS1 existente (o cualquier variable) y solo establecer la PS1 si aún no está configurada.
o, lo que simplifica las cosas, agrupa sus configuraciones en una función ... y despliega esa función como un archivo especial de su fuente a pedido (
source joes_bashrc
) o directamente en el .bashrc. tener tu propio archivo parece un poco más robusto. las otras personas pueden usar su configuración, pero no están obligados a hacerlo.fuente
No comparta inicios de sesión. SSH como tú mismo, luego hazlo
sudo -su shareduser
(-s
significa "shell").Haga
sudo
mantener su directorio de inicio:fuente
Si quieres hacerlo sin necesitar un scp adicional, puedes hacer algo como esto:
ssh -t srvname ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'
Eso generará un .bashrc.n que se basa en los servidores bashrc pero con sus anulaciones.
fuente
Si usted está dispuesto a entrometerse de manera imperceptible en sus colegas, y se puede confiar en ellos para no interferir con su preferencia, entonces sugiero una combinación de respuesta de Cyrus , la respuesta de Akira y la respuesta de Dennis Williamson .
~/.bashrc
y agregue al final. Si bien sus colegas "no apreciarían que [usted] escribiera sobre el perfil base", no se darán cuenta de esto a menos que lo busquen.Creo que esto es bastante claro, pero: el
ssh
comando hace que laUnf
variable se establezca en el servidor remoto cuando inicia sesión. Eso invocará su código en el control remoto.bashrc
, lo que pondrá en vigencia su (s) personalización (es). Como coloca su código al final de.bashrc
, anulará la configuración general anteriormente en el archivo.Divulgación: no he probado esto.
fuente
La forma más fácil es en mi humilde opinión:
fuente
PROMPT_COMMAND
(que se ejecuta cada vez que el shell emite un mensaje) parece ser una forma muy difícil de resolver este problema. Y, dado que es algo arcano, cualquier respuesta que sugiera que realmente debería tener una explicación de cómo funciona.Podrías hacer cosas como montar tu casa sobre sshfs / nfs, pero la solución más fácil es pasar tu bashrc a la nueva máquina. Esto también trae alias y esas cosas.
fuente