Как мне установить $PATH таким образом, что` ssh user@host command ' работает?
Я не могу установить новый $ путь таким образом, что он используется при выполнении команд через ssh user@host command. Я пробовал добавлять export PATH=$PATH:$HOME/new_path to ~/.и bashrc и ~/.профиль на удаленной машине, но выполнение ssh user@host "echo $PATH" показывает, что изменение не поднял (он показывает /usr/местные/sbin:/usr/местные/Бен: выполнить/sbin:/usr/Бен: файл/sbin:/bin: Белый каталог/usr/игры). Удаленном компьютере с Ubuntu 8.04.
Я уверен, что могу взломать его в/etc / profile, но это не чистое решение, и оно работает только тогда, когда один имеет корневой доступ.
6 ответов:
Как сказал Гравити,~/.bashrc - это то, что вы хотите, так как он получен неинтерактивными оболочками без входа в систему.
Я ожидаю, что проблема, с которой вы столкнулись, связана с Ubuntu по умолчанию ~/.файл bashrc. Это обычно начинается с чего-то вроде этого:
# If not running interactively, don't do anything [ -z "$PS1" ] && returnвы хотите поставить что-нибудь для неинтерактивных оболочек до эта строка.
у вас есть
~/.bash_loginили~/.bash_profile?Bash в интерактивном режиме проверяет наличие этих файлов и использует первый существующий в следующем порядке:
~/.bash_profile~/.bash_login~/.profileтак что если у вас есть
~/.bash_profile, то все изменения, которые вы делаете, чтобы~/.profileостанется незамеченным.Bash в неинтерактивном режиме иногда считывает файл
~/.bashrc(который также часто является источником из интерактивных скриптов.) Под "иногда" я имею в виду, что это зависит от распределения: довольно странно, есть опция времени компиляции для включения этого. Debian включает~/.bashrcчтение, в то время как, например, Arch не делает.
sshкажется, использует неинтерактивный режим,так~/.bashrcдолжно быть достаточно. Когда возникают такие проблемы, я обычно добавляю несколько echo, чтобы увидеть, какие файлы запускаются.
ssh документация говорит:
если команда указана, она выполняется на удаленном хосте вместо оболочки входа.
вот почему добавление в файлы bashrc не работает. однако у вас есть следующие варианты:
Если
PermitUserEnvironmentопция установлена в конфигурации sshd, вы можете добавить свой путь настройки в~/.ssh/environment
ssh remotemachine 'bash -l -c "somecommand"'