Глобальная настройка PATH для удаленных команд SSH - PullRequest
2 голосов
/ 29 октября 2010

У меня проблема с переменной PATH в Debian Linux при выполнении команд через SSH.Это происходит, например, когда я использую GIT или Mercurial, и они устанавливаются в / opt вместо / usr / local.Но я также легко могу воспроизвести это так:

Когда я вхожу на сервер через SSH обычным способом, а затем выполняю echo $PATH, тогда я получаю PATH, который я настроил в / etc / profile:

/usr/local/bin:/usr/bin:/bin:/usr/games:/opt/maven/bin:/opt/ant/bin:/opt/mercurial/bin:/opt/git/bin

Но когда я делаю ssh user@server 'echo $PATH' вместо этого, я получаю это:

/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

То же самое происходит, когда я использую GIT или Mercurial с ssh URL.Он не может найти исполняемый файл hg или git на сервере, потому что он не получает PATH из /etc/profile.

Так что вопрос в следующем: есть ли «более глобальный» способ настроить PATH так,это также работает с удаленным выполнением SSH?Настройка PATH для каждого пользователя не вариант.Указание полного пути к исполняемым файлам git / hg при использовании git / hg на клиенте также не вариант.И я знаю, что мог бы использовать символические ссылки или сценарии-оболочки в / usr / local / bin, чтобы заставить его работать, но я явно ищу возможность иметь правильный PATH при удаленном выполнении команд через SSH.

Ответы [ 4 ]

1 голос
/ 29 октября 2010

В Debian стандартная среда настраивается через pam_env/etc/pam.d/sshd), которая будет читать /etc/environment и /etc/security/pam_env.conf.Вы можете либо отредактировать их, либо добавить еще одну строку pam_env в конфигурацию pam, указывающую на файл среды, специфичный для имен входа SSH.

0 голосов
/ 17 апреля 2012

Я решил эту проблему, включив все необходимые файлы в .bashrc

Например:

. /etc/profile.d/rvm.sh
. /etc/profile.d/bash_completion.sh 
0 голосов
/ 29 октября 2010

Сервер ssh устанавливает некоторые переменные окружения в начале сеанса. Вы можете создать файл ~/.ssh/environment на сервере ssh для установки дополнительных переменных (при условии, что на сервере есть сервер BSD openssh), но сервер должен быть настроен для изменения среды.

Если вышеперечисленное не работает, вы можете установить удаленную команду. В Mercurial это --remotecmd переключатель для push и pull.

0 голосов
/ 29 октября 2010

Хотя это не ответ на вашу проблему, из этой ссылки похоже, что ssh имеет собственные настройки пути

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...