Я знаю разницу между двумя сценариями входа в bash:
.bashrc
запускается только оболочками, не входящими в систему.
.bash_profile
(или .bash_login
или .profile
) выполняется "логином" оболочек.
Есть ли у кого-нибудь хорошие примеры того, какие вещи лучше подходят для выполнения только при входе в систему, например, я бы их только добавил .bash_profile
, но они не имели бы смысла .bashrc
?
(Я знаю, что большинство из нас исходят .bashrc
из этого .bash_profile
, так что, похоже, нет особого смысла в противоположном вопросе ...)
Ответы:
Так как a
.bashrc
для оболочек без входа в систему, я избегаю любых команд, которые отражаются на экране. Я также сталкивался с опытом, когда операторы echo.bashrc
приводят к сбою команд sftp и rsync (и, возможно, к командам scp).Кроме того, вы обычно не запускаете ssh-agent из неинтерактивной оболочки. Так что у меня есть это
.bash_profile
.источник
.bashrc
вмешательстве в методы удаленной передачи файлов, реализованные через стандартные потоки , решение состоит в том, чтобы поместить такие команды в код, который проверяет, является ли оболочка интерактивной и продолжается ли она только в том случае, если она есть. Пользовательские.bashrc
файлы по умолчанию в Ubuntu, скопированные/etc/skel/.bashrc
при создании учетной записи, а также в масштабе всей системы/etc/bash.bashrc
, уже содержат код, который проверяет и возвращает, не является ли оболочка неинтерактивной (хотя все равно необходимо помещать под них свои производящие вывод команды ).Бёбу - отличный пример того, что вы никогда не должны использовать
.bashrc
.В противном случае, он будет рекурсивно работать сам в каждом из своих «виртуальных терминалов» ;-)
Вы можете попробовать это хотя, это отчасти весело.
Вот почему вы вставляете его
.profile
, поэтому byobu (который на самом деле просто оболочка вокруг экрана) загружается только один раз, во время входа в систему. И сама Бёбу может начать новые интерактивные сессии Bash.источник