写了一个ssh命令用于发布jar文件
ssh user@ip “bash -s” < ./deploy_test.sh
deploy_test.sh内容如下:
……
export SPRING_PROFILES_ACTIVE=test && java -jar ${jar_file} >> console.log 2>&1 &
……
结果发现执行命令后,ssh连接没有自动断开,需要Ctrl+C才能断开连接。
后面测试才发现是设置环境变量导致以上问题,换一种方式设置环境变量就正常了:
正确方法一:
java -jar ${jar_file} –spring.profiles.active=test >> console.log 2>&1 &
正确方法二(临时环境变量(仅对单个命令有效)):
SPRING_PROFILES_ACTIVE=test java -jar ${jar_file} >> console.log 2>&1 &
正确方法三(持久环境变量(对当前 shell 及其子进程都有效)):
export SPRING_PROFILES_ACTIVE=test && java -jar ${jar_file} >> console.log 2>&1 & # 环境变量设置没有问题,不知道为什么会导致不能主动断开ssh连接
# 拆成2行就正常了
export SPRING_PROFILES_ACTIVE=test
java -jar ${jar_file} >> console.log 2>&1 &
错误的方式:
export SPRING_PROFILES_ACTIVE=test java -jar ${jar_file} >> console.log 2>&1 & # 语法错误
SPRING_PROFILES_ACTIVE=test && java -jar ${jar_filename} >> console.out 2>&1 & # 虽然无语法错误,但是设置环境变量无效