记一个因设置环境变量导致ssh连接不能正常退出的case

写了一个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 & # 虽然无语法错误,但是设置环境变量无效