2014-06-21 53 views
0

我有shell脚本调用test.sh,它包含Unix的环境变量不设置远程执行

echo 'welcome' 
echo $inf_user 

,当我在UNIX箱输出运行此脚本

欢迎

myusername

但是,当我使用运行此脚本砰砰我的输出是

欢迎

正如你可以看到它只能显示欢迎,它并没有显示名为myUsername了更多

请帮

我的plink命令是 - plink.exe -ssh [email protected] -l user -pw password -m c:/myfile/file.txt hostname

和 file.txt的包含

#!/bin/sh 
/folder1/folder2/test.sh 
+0

'$ inf_user'在哪里设置?这不是一个典型的环境变量。如果你正在寻找你的名字,试试脚本中的'$ USER'(全部大写)。 – lornix

回答

1

的问题是,当你真正登录到你的服务器,你还加载环境变量,如$inf_user。但是,当plink.exe连接,我猜测它没有启动一个真正的SSH会话,将加载用户配置文件&相关的环境变量。

如何解决这个取决于安装&安装要求。不熟悉如何设置$inf_user,但也许你可以这样做;我以本地Mac OS X安装程序为例。首先登录TI远程Unix/Linux服务器并输入以下内容:

echo $PATH; 

,它的输出应该是这样的:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 

现在在你的脚本在远程主机上添加这一行基于对输出到文件的顶部:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 

这将迫使脚本使用PATH作为$PATH

此外,由于$inf_user不是标准的Unix/Linux变量,因此它可能是在远程系统上的.bashrc.profile中设置的。所以你可能想在那里查看有没有可以复制的变量。

和以往所有这一切,我不是如何plink.exe作品100%肯定,但file.txt可能会为bash这样会更好集:

#!/bin/bash 
/folder1/folder2/test.sh 

我有一种奇怪的感觉,当你登录你正在使用bash外壳程序,但此脚本使用的是基本的外壳代码sh,这也可能导致此问题。

1

在大多数UNIX系统上,变量$USER可用于访问当前登录用户的用户名。变量$inf_user特定于您碰巧拥有的任何设置。

另外,在一个不相关的说明中,我看到您在命令中指定了密码。通常不应该这样做,因为命令在命令历史记录中未加密记录,并且可以在机器上运行ps的任何人看到。我建议你运行一个不含密码的命令,但可以通过标准输入来输入密码。