Answers:
.bashrc
是一个Shell脚本,只要交互式启动,Bash就会运行。它初始化一个交互式外壳会话。您可以将任何命令放在该文件中,您可以在命令提示符下键入该命令。
您可以在此处放置命令来设置要在您的特定环境中使用的外壳,或根据自己的喜好自定义内容。常见的事就摆在.bashrc
有别名要始终可用。
.bashrc
在每次交互式shell启动时运行。如果你说:
$ bash ; bash ; bash
再打Ctrl-D三下,.bashrc
就会跑三下。但是,如果您这样说:
$ bash -c exit ; bash -c exit ; bash -c exit
则.bashrc
根本不会运行,因为这-c
会使Bash调用变为非交互式。从文件运行Shell脚本时也是如此。
对比.bash_profile
和.profile
仅在新登录Shell的开头运行。(bash -l
)你选择一个命令是否已经在.bashrc
VS .bash_profile
取决于你是否希望它运行一次或每交互shell启动。
作为别名的反例,我更喜欢放入别名,而.bashrc
您想对其进行PATH
调整.bash_profile
,因为这些更改通常不是幂等的:
export PATH="$PATH:/some/addition"
如果.bashrc
改用这种方式,则每次启动交互式子Shell时,它:/some/addition
都会被拖到另一个子外壳的末尾PATH
,从而在您键入错误的命令时为Shell产生了额外的工作。
每当你你得到一个新的互动Bash shell中掏出的vi
有:sh
,例如。
.bashrc
。这有时会导致意外行为。通常的解决方法是.bashrc
从.profile
或.bash_profile
代替。
.bashrc
不打算供其他Shell使用,因此最好不要从中获取.profile
(其他非bash
Shell 可能会使用)。
source ~/.bashrc
或. ~/.bashrc
或[[ -f ~/.bashrc ]] && source. ~/.bashrc
或[ -f ~/.bashrc ] && source ~/.bashrc
不工作?
.bashrc
确实是来源(使用superuser.com/a/183980/128768的推荐命令)。我面临的问题实际上是https://github.com/junegunn/fzf
通过以下命令无法采购.bashrc
:source ~/.fzf.bash
。我启动了一个新终端,然后Ctrl
+ R
,我得到了`__fzf_history__`bash: fzf: command not found
。我手动进行采购,.bashrc
并且相同的快捷键可以按预期启动fzf。抱歉这里的噪音。
.bashrc
文件的目的是提供一个地方,您可以在其中设置变量,函数和别名,定义(PS1)提示以及定义每次打开新终端窗口时要使用的其他设置。
每次打开新的终端,窗口或窗格时,都可以运行它。
您可以在这里看到我的(带有语法突出显示的图片):
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 制作并cd进入目录。如果在git repo中找到当前的git分支,然后...
-5。-9。定义一个很棒的PS1提示,如
-10。改进了PS2提示
-11。在命令行
-12 处将vi设置为编辑器。将vi设置为默认编辑器
-13。执行我的.bash_aliases
文件(如果存在)
-14。如果存在,请执行我的git选项卡完成脚本(用于远程和分支)。
-15。如果存在
-16,则执行自动跳转。如果bash版本> = 4,则允许在不键入cd的情况下进行cd'ing
-17。如果bash完成脚本存在,则执行
-18。如果存在,请使用TMUX
-19。将rvm添加到我的PATH
-20。如果存在,请使用rvm。
我已经将此便携式计算机制成了它,以便它可以在我的任何Linux或OSX机器上运行而无需自定义-因此,在使用某些功能和其他脚本之前,需要对存在性进行大量测试。
这也使在新计算机上立即使用整个文件变得更容易,而不会出现影响打开新终端窗口的问题。
这是一个bash
配置文件。
交互式(非登录)shell,然后从以下文件中读取配置:
$HOME/.bashrc
对于登录外壳,将从以下文件读取配置:
/etc/profile
(始终来源)$HOME/.bash_profile
(依次检查其余的这些文件,直到找到其中一个,然后再读取其他文件)$HOME/.bash_login
$HOME/.profile
下图简单说明了它们的加载方式/加载时间。
我echo
在.bashrc
和添加了.bash_profile
查看man bash
更多信息
.bashrc
并区分了.bashrc
和.bash_profile
涵盖了答案内容的区别。不要灰心,您提出了诚实的努力,但是请尝试专注于回答某些内容未包含在其他答案中的问题。