找不到ssh环境变量bash命令

时间:2011-11-10 09:18:54

标签: linux variables ssh

我尝试从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添加到路径中..

2 个答案:

答案 0 :(得分:2)

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'

您可以确保按照您的预期设置环境变量,如果出现问题,您仍然会登录到主机,从而允许您撤消更改。

答案 1 :(得分:1)

您为路径使用了多个环境变量。但是不要从我看到的命令中导出。

你应该这样做。

export PATH="A"
export PATH="$PATH:B"
export PATH="$PATH:C"

此外,您可以从那里获得此类帮助。 所以请把它发布到unix。

https://unix.stackexchange.com/questions/12391/how-to-run-my-c-program-from-anywhere-within-the-system-ubuntu-10-10

希望它有所帮助。