几个小时以来,我一直在尝试寻找一种方法来做到这一点,但没有任何进展。
我有一个大型环境文件,已将其保存为 ksh 脚本。如果我输入 ./setEnv.sh,此脚本将完美运行
但是,我想使用 ssh 或 rsh 登录到远程系统,执行此脚本,然后允许我以修改后的形式使用该系统。我能够成功执行脚本,但执行后连接总是会关闭。我希望能够保持此连接打开。
关于我该如何做到这一点,您有什么想法吗?
目前,我使用 SSH 还是 RSH 来实现这一点并不重要。RSH 更可取。我使用的是多种 Linux 和 Solaris 操作系统,因此,采用一种万能方法会更好。
像这样的命令:
ssh user@host "/home/me/directory/setEnv.sh"
确实在远程机器上执行了脚本,但不允许我使用修改后的环境。
谢谢,马特
答案1
ssh -t -t user@host 'bash -l -i --init-file env.sh'
部分-t -t
是强制 ssh 分配一个 TTY,bash -l -i
部分是以登录模式和交互方式启动 bash。
这--init-file
部分是你的脚本如何操纵环境。它应该提供来源~/.bashrc
和/etc/bash.bashrc
。
答案2
也许您可以在完成脚本后手动运行 shell。
ssh ip -l root "/bin/bash env.sh; /bin/bash"
答案3
或者简单地编辑你的.bash_profile并添加./setEnv.sh 命令。
答案4
如果我理解正确的话(我不确定我是否理解正确),那么您只需使用“source”命令执行此操作。
ssh 到目标机器,然后“source env.sh;nextcommand;nextcommand”
那有意义吗?