交互式和非交互式shell中的环境变量

时间:2015-11-16 16:27:51

标签: linux shell unix ssh environment-variables

假设我正在尝试执行具有行

的脚本userScript
env > ENVIRONMENTAL_VARIABLES.txt

我是按照以下两种方式做到的。

1

通过使用ssh实际登录:

ssh host
password:xyz***
./userScript

ENVIRONMENTAL_VARIABLES.txt确实已创建并包含命令env的结果。

2

ssh -i key host 'userScript'

在这种情况下,ENVIRONMENT_VARIABLES.txt不会被创建。

另外,我相信第一种情况将是交互式shell的一个例子,第二种情况是非交互式shell(如果我错了,请纠正我。)。并且两种机制都存在差异(无论是.profile,.bashrc等文件是否被执行)。

如何确保在第二种情况下创建ENVIRONMENT_VARIABLES.txt?要改变哪些环境变量?

2 个答案:

答案 0 :(得分:1)

是的,为交互式和非交互式会话提供了一组不同的启动脚本。

ssh命令行上指定命令时,默认情况下会启动非交互式会话。

要强制进行交互式会话,请使用-t开关。请参阅ssh man page

  

-t       强制伪终端分配。 ...

答案 1 :(得分:0)

这可能不依赖于伪终端。正如我所看到的,区别在于命令的规范。使用.txt命令行上Image0001_01.tif[1] <- Image0035_01.tif[1]: (410.0, -362.0) correlation (R)=0.05516124 (176 ms) Image0001_01.tif[1] <- Image0002_01.tif[1]: (489.0, -495.0) correlation (R)=0.047715914 (287 ms) Image0002_01.tif[1] <- Image0003_01.tif[1]: (647.0, 0.0) correlation (R)=0.8842946 (295 ms) Image0001_01.tif[1] <- Image0036_01.tif[1]: (265.0, -363.0) correlation (R)=0.039207384 (365 ms) Image0002_01.tif[1] <- Image0034_01.tif[1]: (626.0, -626.0) correlation (R)=0.60634625 (124 ms) ........... 路径的完整路径或相对路径:

$HOME

如果有问题,请查看ssh的输出,并可能在ssh上使用ssh -i key host '/add/path/here/userScript' 选项再次运行命令。

另外,请注意当前目录,ssh通常从您的主目录开始。如果您的脚本不在您的主目录中,请使用此答案中的上述示例中的路径。

如果您从未创建文件的命令发布实际输出,则可以更快地获得更好的答案。