Отредактировано, чтобы отразить проблему, которую я действительно хотел решить:
Мне нужно настроить свою среду ruby, чтобы я мог развернуть ее через Capistrano.
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"
Я помещаю их в ~ deploy / .profile, но когда я запускаю ssh, они не запускаются. Идеи?
Я использую Ubuntu 12.04.
Первоначальный вопрос был:
Когда я захожу в другой аккаунт на localhost, он не загружает мой .profile. Как я могу заставить ssh загрузить его? Я использую Ubuntu 12.04.
.profile
загружается только для оболочек входа в систему, которых нет в сеансе ssh (по умолчанию). Если вы хотите, чтобы что-то запускалось при запуске для всех интерактивных оболочек, вставьте это.bashrc
вместо (.zshrc
или того, что использует ваша оболочка).Кроме того, если вы просто хотите войти в другую учетную запись на локальном компьютере, ssh, вероятно, излишне. Вы можете использовать
su
или что-то вместо этого.источник
.bashrc
тоже не грузится.Использование 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 читает
~/.profile
только тогда, когда это оболочка входа в систему и~/.bash.bashrc
только если у него есть терминал, ни один из которых не является истинным по умолчанию при вызове команды с помощью ssh. Однако, есть несколько других опций для установки среды на сервере, но, к сожалению, все зависит от настроек системы:~/.zshenv
даже в этом случае; для bash нет соответствующего файла конфигурации.PermitUserEnvironment
опция/etc/sshd_config
включена, ssh будет читать~/.ssh/environment
. К сожалению, эта опция по умолчанию отключена.pam_env.so
вызывается сuser_readenv=1
in/etc/pam.d/sshd
, он будет читать~/.pam_environment
. Хотя это не модуль по умолчанию, он называется так, по крайней мере, в Ubuntu .command=
директиву в файл авторизованных ключей, вызывая скрипт-обертку, который устанавливает среду и выполняет$SSH_ORIGINAL_COMMAND
в конце (я это команда для оболочки, поэтому здесь уместно использовать eval, но я не уверен) ,источник
Вы, вероятно, есть
~/.bash_profile
, который переопределяет~/.profile
.источник