War*_*ung 210
.bashrc是一个 Bash shell 脚本,只要它以交互方式启动,Bash 就会运行它。它初始化一个交互式 shell 会话。您可以将任何可以在命令提示符下键入的命令放入该文件中。
您可以在此处放置命令来设置 shell 以在您的特定环境中使用,或者根据您的喜好自定义内容。常见的事就摆在.bashrc有别名要始终可用。
.bashrc在每次交互式 shell 启动时运行。如果你说:
$ bash ; bash ; bash
Run Code Online (Sandbox Code Playgroud)
然后打Ctrl-D三下,.bashrc就会跑三下。但是如果你这样说:
$ bash -c exit ; bash -c exit ; bash -c exit
Run Code Online (Sandbox Code Playgroud)
然后.bashrc根本不会运行,因为-c使 Bash 调用非交互式。从文件运行 shell 脚本时也是如此。
对比.bash_profile和.profile仅在新登录 shell 开始时运行的。( bash -l) 您选择命令是否进入.bashrcvs.bash_profile取决于您是希望它运行一次还是每次交互式 shell 启动。
作为别名的反例,我更喜欢将其放入 中.bashrc,您希望对其进行PATH调整.bash_profile,因为这些更改通常不是幂等的:
export PATH="$PATH:/some/addition"
Run Code Online (Sandbox Code Playgroud)
如果你把它放进去.bashrc,每次你启动一个交互式子 shell 时,:/some/addition都会被添加到另一个的末尾,PATH当你输入错误命令时,会为 shell 创建额外的工作。
例如,每当您退出viwith 时:sh,您都会获得一个新的交互式 Bash shell 。
Mic*_*ant 39
.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"
Run Code Online (Sandbox Code Playgroud)
这就是你真正知道的开始
这是“矫枉过正”版本,对有经验的开发人员有用:
经验丰富的开发人员通常会拥有更多。
你可以在这里看到我的(带有语法突出显示的图片):
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"
Run Code Online (Sandbox Code Playgroud)
解释:
-1. 设置我的历史文件以忽略重复项并且比默认文件大得多。
-2. 颜色选项ls取决于您使用的是 linux 还是 OSX
-3。函数“ md”使用一个命令
-4制作和 cd 到一个目录中。如果在 git repo 中找到当前的 git 分支,并且...
-5。-9. 定义一个很棒的 PS1 提示,如
-10。改进了 PS2 提示
-11。在命令行
-12中将 vi 设置为编辑器。将 vi 设置为默认编辑器
-13。.bash_aliases如果存在
-14,则执行我的文件。如果存在,执行我的 git tab 完成脚本(用于远程和分支)。
-15。如果存在
-16,则执行自动跳转。如果 bash 版本 >= 4
-17,则允许在不键入 cd 部分的情况下进行 cd'ing 。如果存在
-18,则执行 bash 完成脚本。如果存在
-19 ,则使用 TMUX 。将 rvm 添加到我的 PATH
-20。如果 rvm 存在,请使用它。
我已经把它做成了可移植的,这样它就可以在我的任何 linux 或 OSX 机器上运行而无需定制 - 因此在使用某些功能和其他脚本之前完成了许多存在测试。
这也使得在新机器上立即使用整个文件变得更容易,而不会出现影响打开新终端窗口的问题。
提醒 - 如果您更改 .bashrc,请确保在重新启动之前启动一个新的终端窗口以确保它可以正常工作(最佳实践 - 在更改后立即执行)。如果您搞砸了 .bashrc 并重新启动,您可能无法登录!就个人而言,我还在个人计算机上创建了第二个“管理员”用户,以便在这种紧急情况下(登录中断),我可以登录该用户,然后使用 sudo 修复我的其他登录 .bashrc 文件。
Tim*_*art 15
它是一个 bash配置文件。
交互式(非登录)shell,然后从这些文件中读取配置:
$HOME/.bashrc对于登录 shell,从这些文件中读取配置:
/etc/profile (始终来源)$HOME/.bash_profile (这些文件的其余部分按顺序检查,直到找到一个,然后不读取其他文件)$HOME/.bash_login$HOME/.profile下图显示了如何/何时加载它们的简单说明。
我echo在我的.bashrc和.bash_profile
查看man bash更多信息