La respuesta de Mike probablemente funcionará. Pero vale la pena señalar que puede lograr esto cuidadosamente seleccionando en qué archivos de inicio colocar las cosas detalladas. Desde la página de manual de bash:
Cuando se invoca bash como un shell de inicio de sesión interactivo o como un shell no interactivo con la opción --login, primero lee y ejecuta comandos del archivo / etc / profile, si ese archivo existe. Después de leer ese archivo, busca ~ / .bash_profile, ~ / .bash_login y ~ / .profile, en ese orden, y lee y ejecuta comandos del primero que existe y es legible. La opción --noprofile se puede usar cuando se inicia el shell para inhibir este comportamiento.
Cuando se inicia un shell interactivo que no es un shell de inicio de sesión, bash lee y ejecuta comandos desde ~ / .bashrc, si ese archivo existe. Esto puede inhibirse usando la opción --norc. La opción de archivo --rcfile obligará a bash a leer y ejecutar comandos desde el archivo en lugar de ~ / .bashrc.
Las herramientas sftp / scp inician un shell interactivo sin inicio de sesión, por lo que se obtendrá .bashrc. Muchas distribuciones obtienen .bashrc de .bash_profile o viceversa, por lo que puede resultar confuso. Un buen truco para probar la limpieza de su entorno de inicio de sesión es ssh con un comando, que simula la misma forma en que se conecta scp / sftp. Por ejemplo: ssh myhost /bin/true
le mostrará exactamente lo que scp / sftp ve cuando se conectan.
Una demostración simple:
insyte@mazer:~$ echo "echo Hello from .profile" > .profile
insyte@mazer:~$ echo "echo Hello from .bashrc" > .bashrc
sazerac:~ insyte$ ssh mazer /bin/true
Hello from .bashrc
sazerac:~ insyte$
insyte@mazer:~$ rm .bashrc
sazerac:~ insyte$ ssh mazer /bin/true
sazerac:~ insyte$
La primera prueba hará que scp / sftp / rsync, etc. se rompa. La segunda versión funcionará bien.
.bashrc
sería fuente descp
ossh host command
.