我使用机器A,并且我想运行机器B中存在的脚本。
我做了普通的命令:
ssh user@machine_B_adress '. script.sh'
问题是我在脚本中使用了一些机器A无法解释的命令。因此我找不到命令:(例如)
ksh: sqlplus: not found
我试图通过以下方式打开嘘:
ssh user @ machine_B_adress
然后运行脚本,就可以了!!!
请您参考如下方法:
假设user @ machine_B的 shell 是bash,则第一个示例'ssh user@machine_B_adress '. script.sh',bash为交互式/非交互式 session 设置 shell env的方式有所不同。
参见man bash关于交互式shell
看起来您可以通过添加bash -l -c来模拟交互式环境
$ ssh user@machine_B_address "bash -l -c '. script.sh'
我的快速测试是将调试回显添加到远程用户的 .bash_profile
$ ssh foouser@jdsrpi1 "bash --login -c '. foo.sh'"
这是文件 .bash_profile
foouser
SHELL = /bin/bash
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
ksh的类似情况
$ ssh kshuser@jdsdrop1.jimsander.io "date"
Tue Apr 18 11:52:43 EDT 2017
$ ssh kshuser@jdsdrop1 "ksh -l -c date"
这是SHELL(/ usr / bin / ksh)文件 .profile
Tue Apr 18 11:53:24 EDT 2017




