4

У меня возникла проблема с получением моего .profile при получении SSH в экземпляре сервера Ubuntu 12.04. Мой .bashrc делает следующее к концу:

if [[ "$TERM" != "screen-256color" ]]
then
   tmux attach-session -t "$USER" || tmux new-session -s "$USER"
   exit
fi

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

У кого-нибудь есть догадки, почему это может происходить? Я мог бы просто вставить все в .bashrc, но я бы хотел узнать, почему .profile не поставляется.

1 ответ1

8

Как обсуждалось в разделе Почему ~/.bash_profile не получает источник при открытии терминала? в «Ask Ubuntu» оболочка, запущенная под tmux , не является оболочкой входа в систему.

Как я могу определить, является ли оболочка «оболочкой для входа»?

  1. Попробуйте ввести « logout ».  Если оболочка завершается, это была оболочка входа в систему.  Если он говорит, что это не оболочка входа в систему, то это не так.
  2. Введите « ps -fp$$ ».  (Измените, если ваш ps принимает разные аргументы, чтобы сделать все, что вам нужно, чтобы получить полный / длинный список информации о процессе для текущей оболочки --– « –p » означает «посмотреть на этот процесс », а « $$ Это PID оболочки.)  Если имя процесса начинается с тире (дефис), как в « -bash » или « -csh », это оболочка входа в систему; в противном случае это не так.  (Наверное.)

… Так что оболочка, запущенная под tmux , не будет смотреть на .bash_profile ; это будет смотреть только на .bashrc .  Поэтому переместите команды, которые вы хотите выполнить, из .bash_profile в .bashrc , или поместите их в обоих местах, или сделайте один источник другим.

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