假设我正在尝试执行一个脚本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/

10-13 09:16