我找不到任何答案"容易找"问题
我想使用ksh shell或脚本执行ssh命令,该命令使用 SERVER 的env变量。
实施例: ssh user @ server" ls $ DIR"
其中$ DIR是服务器上的env变量定义(在这种情况下:目录路径)而不是我客户端env上的$ DIR定义。
在最坏的情况下,我可以使用像 env |这样的东西grep DIR | cut -d" =" -f 2 得到var但它看起来很奇怪。
感谢您的帮助。
答案 0 :(得分:0)
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
环境变量定义移动/复制到服务器端。
答案 1 :(得分:0)
ssh user@server "ls $DIR"
双引号字符串经过变量插值。所以“$ DIR”正在本地系统上被替换,然后shell用结果字符串调用ssh命令。
要将文字命令传递到远程系统,请使用单引号:
ssh user@server 'ls $DIR'