Я знаю разницу между двумя сценариями входа в систему bash:
.bashrc
запускается только оболочками «без входа в систему».
.bash_profile
(или .bash_login
или .profile
) выполняется оболочками «входа».
Есть ли у кого-нибудь хорошие примеры того, какие вещи лучше подходят для выполнения только для входа в систему, так что я бы поместил их только в .bash_profile
, но они не имели бы смысла в .bashrc
? [ 1111]
(Я знаю, что большинство из нас исходят из .bashrc
из .bash_profile
, поэтому, похоже, нет особого смысла в противоположном вопросе ...)
Так как .bashrc
предназначен для оболочек без входа в систему, я избегаю любых команд, которые отражаются на экране. Я также сталкивался с опытом, когда операторы echo в .bashrc
приводят к сбою команд sftp и rsync (и, возможно, также команд scp).
# Print some information as we log in
# -s: OS Name -n: Node name -r: OS Release
uname -snr
uptime
Кроме того, вы обычно не запускаете ssh-agent из неинтерактивной оболочки. Итак, у меня есть это в .bash_profile
.
if [ -f ~/.ssh/ssh-agent ]; then . ~/.ssh/ssh-agent; fi
Бёбу является отличным примером того, что вы никогда не должны вставлять в .bashrc
.
В противном случае, он будет рекурсивно работать сам в каждом из своих «виртуальных терминалов»; -)
Вы можете попробовать его, хотя это довольно забавно.
Вот почему вы поместили его в .profile
, поэтому byobu (который на самом деле является просто оберткой вокруг экрана) загружается только один раз, во время входа в систему. И сам Бёбу может начать новые интерактивные сессии Bash.