Похожие вопросы

Как восстановить удаленную историю в терминале с помощью #history-c
Ошибки синтаксического анализа из-за специальных символов в записях DNS txt
Почему inotifywait-m работает несколько раз? (бесконечный цикл)
Windows 10 Bash команда не работает, несмотря на включение режима разработчика и включение " Подсистема Windows для Linux"
Командная строка Bash перезаписывает текущую строку
Скрипт Homebrew для переустановки формул
сценарий bash: передача аргументов в mkfs
команда diskutil не найдена в терминале OS X
Добавить миллисекунды к существующему времени Unix
Не удается изменить файл "/etc / network / interfaces" с помощью сценария bash в Ubuntu [дубликат]
Проблемы редактирования файлов с nano в Bash / Windows 10
Обрабатывать имя файла с пробелами внутри Bash-скрипта
Как распечатать команду bash history и добавить ее в файл?
Удалить пустые колонки из CSV файл с bash-скрипт
Bash в терминале Mac OSX: "команда не найдена". Почему?

SSH удаленная команда нет чтения всех переменных среды

я объявил некоторые переменные" PATH " в ".bashrc " файл удаленной машины. Когда я подключаюсь к удаленной машине, все эти переменные "PATH" работают нормально. Но когда я делаю "ssh user@remote env", "путь" объявлен в".bashrc " не читаются. Как я могу это исправить?

Это ".файл" в домашней директории на удаленной машине:

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin:

export PATH

Это ".bashrc " в домашнем каталоге на удаленной машине:

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# PATH
export PATH=$HOME/git-1.8/bin/:$PATH

и этого присутствует вывод команды "ssh user@remote env" с моего локального компьютера:

SHELL=/bin/bash
SSH_CLIENT=NNNNNNNNNNNNNNN
USER=XXXXXXXXX
MAIL=/var/mail/XXXXXXXX
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/openssh/bin
PWD=/volume2/home/hp120242/XXXXXXXXX
SHLVL=1
HOME=/home/hp120242/XXXXXXXXXX
LOGNAME=XXXXXXXXXXXXX
SSH_CONNECTION=NNNNNNNNNNNNNNNNNNN
LC_CTYPE=en_US.UTF-8
_=/bin/env

у меня нет прав суперпользователя на удаленной.

5
задан Alex North-Keys
источник

4 ответов

на мой ящик, фарш export HI=THERE в пустом ~/.bashrc показывает этот выход, когда SSH используется для контакта поле для ОКР листинг:

$ ssh $host /usr/bin/env 2>/dev/null | grep HI
HI=THERE

My ~/.bashrc использует подход проверки для пользовательской переменной среды, а затем, если она отсутствует, делает эквивалент:

. ~/.profile   # load in (Bourne-shell syntax) baseline environment variables

следовательно, мои команды ssh-хотя bash запускается так, как будто это субшелл (.только bashrc) - по-прежнему получать переменные среды, которые я обычно ожидаю не-интерактивной оболочки. Я, похоже, не помню, чтобы сделать это явно для SSH много лет назад.

вы могли бы иметь свой ~/.profile установить некоторую переменную, скажем ENVGOOD=true, тогда имейте это в своем ~/.bashrc:

[ -z "$ENVGOOD" ] && . ~/.profile  # sets ENVGOOD=true

или создать ~/.ssh/environment. Обратите внимание, что это последнее будет работать только если PermitUserEnvironment = true на /etc/ssh/sshd_config установлено, что не по умолчанию (и, конечно, почему моя установка не полагается на него).

1
отвечен Alex North-Keys 2013-05-17 08:47:08
источник

вот ответ: SSH не читает rc файлы


.bash_profile не выполняется при выполнении команды, так как SSH не выполняет оболочку входа, она выполняет команду. Вы можете попробовать установить переменные окружения в ~/.ssh/environment но возможно, что чтение этого файла было отключено.

вы можете попробовать принудительно оболочку входа через:ssh user@host bash -lc env.

как отметили другие .bashrc должно быть прочитано при запуске команда. Можете ли вы проверить, что это так, добавив что-то вроде echo EXECUTED до top вашего .bashrc.

также возможно, что все, что находится в /etc/bashrc называет exit так что ничего ниже, что не работает.

1
отвечен sshaw 2017-03-20 10:16:50
источник

на удаленном компьютере убедитесь, что процесс sshd не имеет параметра, переопределяющего путь.

ps aux | grep sshd
0
отвечен Chase T. 2013-09-04 19:19:46
источник

на CentOS / RHEL я сделал следующее

ssh user@host "source .bash_profile; env "

не забудьте\$, чтобы использовать переменные удаленной среды. Например, Следующая команда выведет то же значение

echo $SSH_CLIENT; ssh user@host "source .bash_profile; echo $SSH_CLIENT "

команда ниже

echo $SSH_CLIENT; ssh user@host "source .bash_profile; echo $SSH_CLIENT "

напечатает то, что вы ожидали.

0
отвечен Steve Deackoff 2014-06-18 01:10:30
источник

Другие вопросы bash git ssh