.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 並重新啟動,您可能無法登入!就我個人而言,我還在個人電腦上創建了第二個「admin」用戶,以便在這種緊急情況(登入中斷)時,我可以登入該用戶並使用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了解更多信息

相關內容