我找到了该.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
选择命令是否进入.bashrc
vs。.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 提示符,如
-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 文件。