~ / .profile не загружается при использовании SSH (Ubuntu)

27584
Charles R

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

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

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

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

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


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

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

17

3 ответа на вопрос

14

You may explicitly specify that you want to start an interactive login shell:

 ssh user@host bash --login -i 

The "role" of ~/.profile (or ~./bash_profile) and .bashrc for ssh have some other files, (see man ssh for details):

~/.ssh/environment

Contains additional definitions for environment variables; see ENVIRONMENT, above.

~/.ssh/rc

Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started. See the sshd(8) manual page for more information.

5
qmega

.profile is only loaded for login shells, which an ssh session is not (by default). If you want something to run on startup for all interactive shells, put it in .bashrc instead (or .zshrc or whatever your shell uses).

Also, if you just want to log into another account on the local machine, ssh is probably overkill. You might want to use su or something instead.

Кажется, `.bashrc` тоже не загружен. kenorb 9 лет назад 1
Это неверно ** это ** оболочка для входа Со страницы man: «Если указана команда, она выполняется на удаленном хосте вместо оболочки входа». mkj 8 лет назад 0
~ / .zshenv у меня работает. http://unix.stackexchange.com/questions/4921/sh-startup-files-over-ssh/ user91155 7 лет назад 0
2
eremmel

Использование 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при использовании Баша):

 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 

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