我有两个服务器A和B,我在服务器A中有一个shell脚本,它(通过ssh)登录到服务器B并运行以下命令:
sh cassandra-cli -h <serverB> -v -f database_import.txt;
因此,当我手动执行此操作时,我会遵循以下步骤:
serverA:~$ ssh serverB
serverB:~$ sh cassandra-cli -h <serverB> -v -f database_import.txt;
当我手动执行这些步骤时,它可以正常工作,但当我在shell脚本中通过以下行自动执行此过程时:
serverA:~$ssh serverB "sh cassandra-cli -h <serverB> -v -f database_import.txt;"
我收到这个错误,
cassandra-cli: 46: cassandra-cli: -ea: not found
因此,正如您已经指出的,$JAVA
通过ssh是空的。
这是因为当您使用ssh
登录时,.bashrc
不是来源。你可以这样来源:
. ~/.bashrc
你的命令看起来是这样的:
ssh serverB ". ~/.bashrc; sh cassandra-cli -h <serverB> -v -f database_import.txt;"
您也可以尝试将其放入.bash_profile中,而不是每次手动调用它。
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi