通过SSH命令在ksh中使用远程服务器env变量

时间:2015-01-09 13:33:07

标签: unix ssh ksh env

我找不到任何答案"容易找"问题

我想使用ksh shell或脚本执行ssh命令,该命令使用 SERVER 的env变量。

实施例: ssh user @ server" ls $ DIR"

其中$ DIR是服务器上的env变量定义(在这种情况下:目录路径)而不是我客户端env上的$ DIR定义。

在最坏的情况下,我可以使用像 env |这样的东西grep DIR | cut -d" =" -f 2  得到var但它看起来很奇怪。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

SSH命令执行shell是non-interactive shell,而普通的shell是login shell或interactive shell。

事实上,并非所有环境变量都在非交互式shell中可用,您需要检查ksh手册以确定kshnon-interactive模式下运行时读取的配置文件,在bash的情况下,大致如下

/etc/profile
~/.bash_profile
~/.bash_login
~/.profile

找出ksh的相应内容,然后将DIR环境变量定义移动/复制到服务器端。

答案 1 :(得分:0)

ssh user@server "ls $DIR"

双引号字符串经过变量插值。所以“$ DIR”正在本地系统上被替换,然后shell用结果字符串调用ssh命令。

要将文字命令传递到远程系统,请使用单引号:

ssh user@server 'ls $DIR'