我尝试从 ssh 非交互式 ssh 连接启动一些命令。为此,我使用 ant-sshexec 连接。
为了设置一切,我使用了这篇文章: http://www.raphink.info/2008/09/forcing-environment-in-ssh.html
我使用 ~/.ssh/environment。 为此,我在 sshd_config 中将 PermitUserEnvironment 设置为“yes”并重新启动了 sshd。
在我的 .ssh/environment 中我有这个内容:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/ubuntu/java/jdk1.6.0_27/bin
JAVA_HOME=/home/ubuntu/java/jdk1.6.0_27
#PATH=/home/ubuntu/java/jdk1.6.0_27/bin:$PATH
#PLAY_HOME=/home/ubuntu/play
尝试使用非交互式连接时出现错误:
[sshexec] Could not execute the java executable, please make sure the JAVA_HOME environment variable is set properly (the java executable should reside at JAVA_HOME/bin/java).
但是我在路径中添加了 java..
最佳答案
sshd(8)
的手册页是关于 ~/.ssh/environment
的:
It can only contain empty lines, comment lines (that start with
‘#’), and assignment lines of the form name=value.
也就是说,它根本不是一个shell脚本。您有双引号、变量扩展和别名定义。这些都行不通。试试这个:
PATH=/home/ubuntu/java/jdk1.6.0_27/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
JAVA_HOME=/home/ubuntu/java/jdk1.6.0_27
PLAY_HOME=/home/ubuntu/play
还要确保 ~/.ssh/environment
的权限如手册页中所述 - 没有组或文件的其他写入权限。
如果您担心在损坏的环境中将自己锁定在帐户之外,请先登录主机并运行如下测试命令进行测试:
ssh localhost 'echo $JAVA_HOME'
您可以确保环境变量的设置符合您的预期,如果出现问题,您仍然可以登录到主机,从而可以撤消更改。
关于linux - 找不到 ssh 环境变量 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8077259/