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

Use remote server env variable in ksh via an SSH command

我找不到这个“看起来简单”的问题的答案。

我想使用 ksh shell 或使用 SERVER.

的环境变量的脚本执行 ssh 命令

示例: ssh user@server "ls $DIR"

其中 $DIR 是在 服务器 上定义的环境变量(在本例中:目录路径),而不是在我的客户端环境上定义的 $DIR。

在最坏的情况下,我可以使用类似 env |目录 |剪切-d“=”-f 2 获取 var 但它看起来很奇怪。

感谢您的帮助。

SSH 命令执行 shell 是 non-interactive shell,而您的正常 shell 是 login shell 或interactive shell.

事实上并不是所有的环境变量都可以在非交互中使用 shell,你需要查看 ksh 手册来找出 ksh 在 [=33] 时读取的配置文件=] 在 non-interactive 模式下,在 bash 的情况下,这些大致遵循

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

只需在服务器端找到 ksh 和 move/copy 对应的 DIR 环境变量定义即可。

ssh user@server "ls $DIR"

双引号字符串进行变量插值。因此“$DIR”在本地系统上被替换,然后 shell 使用结果字符串调用 ssh 命令。

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

ssh user@server 'ls $DIR'