我找不到这个"易看"问题的任何答案。
我想使用 ksh 外壳或脚本执行 ssh 命令,这些脚本使用 SERVER 的 env 变量。
例:SSH user@server "LS $DIR"
其中$DIR是服务器上定义的 env 变量(在本例中为目录路径),而不是在我的客户端 env 上定义的$DIR。
在最坏的情况下,我可以使用类似 env | grep DIR | cut -d "=" -f 2获取 var,但它看起来很奇怪。
感谢您的任何帮助。
ssh user@server "ls $DIR"
双引号字符串经过可变插值。因此,"$DIR"在本地系统上被替换,然后 shell 使用生成的字符串调用 ssh 命令。
要将文本命令传递到远程系统,请使用单引号:
ssh user@server 'ls $DIR'
SSH 命令执行 shell 是 non-interactive
shell,而普通 shell 是 login
shell 或 interactive
shell。
实际上并非所有环境变体在非交互式shell中都可用,您需要检查ksh
手册以找出ksh
在non-interactive
模式下运行时读取的配置文件,以防bash
大致如下
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
只需找出相应的ksh
,然后将DIR
环境变量定义移动/复制到服务器端。