通过 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'
我找不到这个“看起来简单”的问题的答案。
我想使用 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'