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



我找不到这个"易看"问题的任何答案。

我想使用 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手册以找出kshnon-interactive模式下运行时读取的配置文件,以防bash大致如下

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

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

相关内容

  • 没有找到相关文章

最新更新