.bashrc 的用途是什么以及它如何工作?

.bashrc 的用途是什么以及它如何工作?

我找到了该.bashrc文件,我想知道它的用途/功能。还有如何以及何时使用它?

答案1

.bashrc是一个重击外壳脚本Bash 每当以交互方式启动时都会运行。它初始化一个交互式 shell 会话。您可以将在命令提示符下键入的任何命令放入该文件中。

您可以在此处放置命令来设置 shell 以在您的特定环境中使用,或者根据您的喜好进行自定义。一个常见的东西.bashrc别名您希望随时可用。

.bashrc运行于每一个交互式 shell 启动。如果你说:

$ bash ; bash ; bash

然后打Ctrl-D三下,.bashrc就会跑三下。但如果你这样说:

$ bash -c exit ; bash -c exit ; bash -c exit

then.bashrc根本不会运行,因为-c会使 Bash 调用非交互式。从文件运行 shell 脚本时也是如此。

对比.bash_profile和 ,.profile它们仅在新的登录 shell 启动时运行。 ( ) 您可以根据您希望命令运行一次还是每次交互式 shell 启动时运行来bash -l选择命令是否进入.bashrcvs。.bash_profile

作为别名的反例,我更喜欢将其放入.bashrc,您想要进行PATH调整.bash_profile,因为这些更改通常不会幂等的:

export PATH="$PATH:/some/addition"

如果你把它放进去.bashrc,每次你启动一个交互式子 shell 时,:/some/addition都会被粘到后面的末尾PATH,当你输错命令时,会为 shell 带来额外的工作。

每当您执行以下操作时,您都会获得一个新的交互式 Bash shell壳出vi:sh,例如。

答案2

文件的目的.bashrc是提供一个位置,您可以在其中设置变量、函数和别名、定义 (PS1) 提示符以及定义每次打开新终端窗口时要使用的其他设置。

它的工作原理是每次打开新的终端、窗口或窗格时运行。

一个超最小的可能有以下内容:

export CLICOLOR=1
export LANG="en_US.UTF-8"
alias cp="cp -i"
alias ls="ls --color=auto"
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
export EDITOR="vim"

这就是您开始时真正知道的全部内容


这是“overkill”版本,对于经验丰富的开发人员很有用:

经验丰富的开发人员通常会拥有更多。
你可以在这里看到我的(带有语法突出显示的图片):

HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }
git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; }
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
PS2='\[\033[01;36m\]>'
set -o vi # vi at command line
export EDITOR=vim
test -f ~/.bash_aliases && . $_
test -f ~/.git-completion.bash && . $_
test -s ~/.autojump/etc/profile.d/autojump && . $_
[ ${BASH_VERSINFO[0]} -ge 4 ] && shopt -s autocd
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$home/.rvm/scripts/rvm"

解释:

-1。设置我的历史文件以忽略重复项并比默认值大得多。
-2。颜色选项ls取决于您使用的是 Linux 还是 OSX
-3。功能“ md”,使用一个命令 -4 来 make 并 cd 到一个目录
。如果在 git 存储库中,则找到当前的 git 分支并且...-
5。 -9。定义一个很棒的 PS1 提示符,如<code>20:00:43 durrantm Castle2012 /hom/durrantm/Dropnot/_/rails_apps/linker master \n $ _</code>
-10。改进了 PS2 提示符
-11。在命令行
-12处将vi设置为编辑器。将 vi 设置为默认编辑器
-13。执行我的.bash_aliases文件(如果存在)
-14。执行我的 git tab 完成脚本(对于远程和分支)(如果存在)。
-15。如果存在则执行 autojump
-16。如果 bash 版本 >= 4
-17,则允许在不输入 cd 部分的情况下进行 cd'ing。执行 bash 完成脚本(如果存在)
-18。如果存在 TMUX,请使用
-19。将 rvm 添加到我的 PATH
-20。使用 rvm(如果存在)。

我已经将其制作为可移植的,以便它可以在我的任何 Linux 或 OSX 机器上运行,无需自定义 - 因此在使用某些函数和其他脚本之前会进行大量的存在测试。

这也使得在新机器上立即使用整个文件变得更容易,而不会出现影响打开新终端窗口的问题。

提醒 - 如果您更改 .bashrc,请务必启动一个新的终端窗口,以确保它在重新启动之前正常工作(最佳实践 - 更改后立即执行)。如果您弄乱了 .bashrc 并重新启动,您可能无法登录!就我个人而言,我还在个人计算机上创建了第二个“管理员”用户,以便在这种紧急情况(登录中断)时,我可以登录该用户并使用 sudo 来修复我的其他登录 .bashrc 文件。

答案3

它是一个bash配置文件。

交互式(非登录)shell,然后从这些文件中读取配置:

  • $HOME/.bashrc

对于登录 shell,配置是从以下文件中读取的:

  • /etc/profile(始终有来源)
  • $HOME/.bash_profile(其余这些文件按顺序检查,直到找到一个,然后不再读取其他文件)
  • $HOME/.bash_login
  • $HOME/.profile

下图简单说明了如何/何时加载它们。

echo在我的.bashrc和中添加了一个.bash_profile

交互式 shell 与登录 shell

请参阅man bash了解更多信息

相关内容