17

Отредактировано, чтобы отразить проблему, которую я действительно хотел решить:

Мне нужно настроить свою среду ruby, чтобы я мог развернуть ее через Capistrano.

export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"

Я помещаю их в ~ deploy/.profile, но когда я запускаю ssh, они не запускаются. Идеи?

Я использую Ubuntu 12.04.


Первоначальный вопрос был:

Когда я захожу в другой аккаунт на localhost, он не загружает мой .profile. Как я могу заставить ssh загрузить его? Я использую Ubuntu 12.04.

3 ответа3

14

Вы можете явно указать, что хотите запустить интерактивную оболочку входа в систему:

 ssh user@host bash --login -i 

"Роль" ~/.profile (или ~./ Bash_profile) и .bashrc для ssh имеет некоторые другие файлы (подробнее см. man ssh ):

~/.Ssh /окружающая среда

Содержит дополнительные определения для переменных среды; см. ОКРУЖАЮЩАЯ СРЕДА, выше.

~/.Ssh /гс

Команды в этом файле выполняются ssh, когда пользователь входит в систему, непосредственно перед запуском оболочки пользователя (или команды). Обратитесь к странице справочника sshd (8) за дополнительной информацией.

6

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

Кроме того, если вы просто хотите войти в другую учетную запись на локальном компьютере, ssh, вероятно, излишне. Вы могли бы хотеть использовать su или кое-что вместо этого.

2

Использование bash должно привести к чтению ~/.bashrc . Следующее может помочь с ksh и sh (bash в режиме sh) или когда ваш ~/.bashrc не выполняется во время входа в систему.

Sshd консультируется с ~/.ssh/environment (проверьте sshd_config (5) на предмет разрешений) и ~/.ssh/sshrc или ~/.ssh/rc . Это дает возможность установить ENV=~/.profile или BASH_ENV=~/.profile и SSH_LOGIN=Y

В ~/.profile меня есть следующий макет (замените ENV на BASH_ENV при использовании bash):


if [[ -n $SSH_LOGIN || -z $ENV ]]; then
     # Put here login initialization code
     unset SSH_LOGIN
     ENV=~/.profile
fi
 # Put here code thats get executed with each ksh/sh invocation

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .