Unix 通过SSH命令在ksh中使用远程服务器env变量
我找不到这个“看起来容易”的问题的答案 我想使用ksh shell或脚本执行ssh命令,该脚本使用服务器的env变量 例如: sshuser@server“ls$DIR” 其中,$DIR是服务器上定义的环境变量(在本例中为目录路径),而不是客户端环境上定义的$DIR 在最坏的情况下,我可以使用像env | grep DIR | cut-d“=”-f2这样的东西 获取var,但它看起来很奇怪Unix 通过SSH命令在ksh中使用远程服务器env变量,unix,ssh,ksh,env,Unix,Ssh,Ksh,Env,我找不到这个“看起来容易”的问题的答案 我想使用ksh shell或脚本执行ssh命令,该脚本使用服务器的env变量 例如: sshuser@server“ls$DIR” 其中,$DIR是服务器上定义的环境变量(在本例中为目录路径),而不是客户端环境上定义的$DIR 在最坏的情况下,我可以使用像env | grep DIR | cut-d“=”-f2这样的东西 获取var,但它看起来很奇怪 感谢您的帮助。SSH命令执行shell是一个非交互式的shell,而您的普通shell是一个登录的shel
感谢您的帮助。SSH命令执行shell是一个非交互式的shell,而您的普通shell是一个登录的shell或交互式的shell 事实上,并非所有的环境变量都可以在非交互式shell中使用,您需要检查
ksh
手册,以确定ksh
在非交互式
模式下运行时读取的配置文件,在bash
的情况下,这些配置文件大致如下
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
只需找出ksh
对应的变量,然后将DIR
环境变量定义移动/复制到服务器端的相应位置
ssh user@server "ls $DIR"
双引号字符串进行变量插值。因此,在本地系统上替换“$DIR”,然后shell使用生成的字符串调用ssh命令
要将文字命令传递到远程系统,请使用单引号:
ssh user@server 'ls $DIR'
谢谢你的澄清。我的.profile中有我的变量,ksh在服务器端使用。但是ssh仍然使用变量present client-side的定义(DIR在两个环境中都是用不同的值定义的)。如何让ssh理解我想要使用服务器的定义?好的,我现在很好。通过在ssh会话开始时启动my.profile并使用Kenster应答语法,我现在使用的是我的远程变量。