[英]How to execute a command on the remote at login with ssh, after .bashrc sourcing?
我正在家里安装了NFS的不同机器上工作。 如果我正在处理的计算机负载过多,我想轻松切换到另一台计算机。
我经常在工作的外壳中修改环境,而当我切换到另一台机器时,我想找到相同的修改过的环境(相对于bashrc)。 我尝试了以下脚本,但由于.bashrc是在source $HOME/.env-dump.txt
源文件之后提供的,因此它不起作用。
使用ssh登录到计算机时,是否有一种干净的方法可以执行某些命令,就像在登录后在提示符下键入它们一样?
#!/usr/bin/env sh
if [[ $# != 1 ]];
echo 'sssh USAGE:'
echo ' sssh remotename'
exit 1
fi
printenv | sed -e '/_=.*/ d;s/\([^=]\+\)=\(.*\)/export \1="\2"/' > $HOME/.env-dump.txt
ssh $1 -t 'source $HOME/.env-dump.txt; bash -l'
~/.bash_profile
添加到您的~/.bash_profile
[ -f "$HOME/.bashrc" ] && . $HOME/bashrc
[ -f "$HOME/.env-dump.txt" ] && source $HOME/.env-dump.txt
并用以下行创建~/.bash_logout
文件
[ -f "$HOME/.env-dump.txt" ] && rm $HOME/.env-dump.txt
现在,您可以在脚本的最后一行中简单地调用ssh $1 -t 'bash -l'
。
警告
printenv
的输出包含一些与机器相关的变量,例如GNOME_KEYRING_CONTROL
, SESSION_MANAGER
, DBUS_SESSION_BUS_ADDRESS
...(这些变量来自Ubuntu 12.04)。 这些变量应从~/.env-dump.txt
文件中删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.