最近有个功能需要通过ssh远程登陆到服务器上执行命令。由于命令比较复杂,就在远程服务器上写好脚本。本地执行该脚本没有问题。远程执行就失败。
由于是java程序,已经想到是环境变量的问题。但如何快速而且简单的解决问题呢?
答案是:
source /etc/profile
把上面的内容添加到脚本中。执行脚本时会初始化环境变量并且执行。如果你需要的环境变量不在这个文件中,也可以加入到这个文件再执行。
最近有个功能需要通过ssh远程登陆到服务器上执行命令。由于命令比较复杂,就在远程服务器上写好脚本。本地执行该脚本没有问题。远程执行就失败。
由于是java程序,已经想到是环境变量的问题。但如何快速而且简单的解决问题呢?
答案是:
source /etc/profile
把上面的内容添加到脚本中。执行脚本时会初始化环境变量并且执行。如果你需要的环境变量不在这个文件中,也可以加入到这个文件再执行。
source script_name.sh or . script_name.sh
这种方式不需要文件有执行权限。当使用source或点号执行脚本时,其中包含的环境变量定义,当前shell可以调用。
案例:
#cat defineUser.sh
user=`whoami`
#sh defineUser.sh
#echo $user
内容为空。
#source defineUser.sh
#echo $user
root
如果是环境变量问题,可以直接使用export命令引用变量。为了保险起见,最好使用source /etc/profile 引用系统变量。防止他们直接有关联。
这都不知道啊