假设我正在尝试执行一个脚本userScript,它有一行
env > ENVIRONMENTAL_VARIABLES.txt
我有两种方法。
一
通过实际使用ssh登录:
ssh host
password:xyz***
./userScript
创建environment_VARIABLES.txt并包含命令env的结果。
二
ssh -i key host 'userScript'
在这种情况下不会创建ENVIRONMENT_VARIABLES.txt。
另外,我相信第一个例子是交互式shell,第二个是非交互式shell(如果我错了,请纠正我)。这两种机制也有区别(是否执行.profile、.bashrc等文件)。
如何确保在第二种情况下也创建ENVIRONMENT_VARIABLES.txt?要为它更改哪些环境变量?
最佳答案
是的,一组不同的启动脚本用于交互式和非交互式会话。
在ssh
命令行上指定命令时,默认情况下会启动非交互式会话。
要强制交互会话,请使用-t
开关。参见ssh
man page:
-t型
强制伪终端分配。...
关于linux - 交互式和非交互式 shell 中的环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33740096/