web-dev-qa-db-ja.com

.bashrcの目的とその機能

.bashrcファイルを見つけました。その目的/機能を知りたいのですが。また、いつどのように使用されますか?

169
Pandya

.bashrcシェルスクリプト であり、Bashがインタラクティブに開始されるたびに実行されます。対話型のシェルセッションを初期化します。そのファイルには、コマンドプロンプトで入力できる任意のコマンドを入力できます。

ここにコマンドを入力して、特定の環境で使用するためにシェルをセットアップするか、好みに合わせてカスタマイズします。 .bashrcに入れる一般的なものは、常に利用可能にする aliases です。

.bashrcは、everyインタラクティブなシェル起動で実行されます。あなたが言うなら:

$ bash ; bash ; bash

そしてヒット Ctrl-D 3回、.bashrcが3回実行されます。しかし、代わりにこれを言うと:

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

その場合、.bashrcはBash呼び出しを非インタラクティブにするため、-cはまったく実行されません。ファイルからシェルスクリプトを実行する場合も同様です。

新しいログインシェルの開始時にのみ実行される.bash_profile.profileを比較してください。 (bash -l)コマンドを.bashrc.bash_profileのどちらで実行するかは、コマンドを1回実行するか、シェルのインタラクティブな起動ごとに実行するかによって異なります。

エイリアスの反例として、.bashrcを使用することをお勧めしますが、.bash_profilePATHを調整する必要があります。これらの変更は通常、 idempotent ではないためです=:

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

代わりに.bashrcに配置すると、インタラクティブなサブシェルを起動するたびに、:/some/additionPATHの最後に再び接続され、シェルに追加の作業が作成されますコマンドを誤って入力したとき。

Shell out of vi with :shなどを使用すると、いつでも新しいインタラクティブなBash Shellを取得できます。

161
Warren Young

.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。 LinuxまたはOSXのどちらを使用しているかに応じて、lsの色オプション
-3。 1つのコマンドでディレクトリを作成してcdする関数 "md"
-4。 gitリポジトリ内にある場合、現在のgitブランチを見つけて...
-5。 -9。次のように、素晴らしいPS1プロンプトを定義します。 <code>20:00:43 durrantm Castle2012 /hom/durrantm/Dropnot/_/Rails_apps/linker master \n $ _</code>
-10。 PS2プロンプトの改善
-11。コマンドラインでviをエディターとして設定する
-12。 viをデフォルトのエディターとして設定する
-13。 .bash_aliasesファイルが存在する場合は実行します
-14。存在する場合は、私のgitタブ補完スクリプト(リモートおよびブランチ用)を実行します。
-15。存在する場合はautojumpを実行します
-16。 bashバージョン> = 4の場合、cd部分を入力せずにcdを許可する
-17。存在する場合、bash完了スクリプトを実行します。
-18。 TMUXが存在する場合は使用する
-19。 PATHにrvmを追加する
-20。存在する場合は、rvmを使用します。

私はこれをポータブルにして、私のLinuxまたはOSXマシンのいずれでもカスタマイズなしで機能するようにしました。したがって、特定の関数や他のスクリプトを使用する前に、いくつかの存在テストが行​​われます。

これにより、新しいターミナルウィンドウを開くときに問題が発生することなく、新しいマシンでファイル全体をすぐに使用することも簡単になります。

注意-.bashrcを変更する場合は、必ず新しいターミナルウィンドウを起動して、再起動する前に機能することを確認してください(変更後すぐに実行してください)。 .bashrcをめちゃくちゃにして再起動した場合、ログインできない場合があります。個人的には、個人のマシンに2番目の「admin」ユーザーを作成して、そのような緊急事態(ログインの失敗)でログインし、Sudoを使用して他のログイン.bashrcファイルを修正できるようにします。

33
Michael Durrant

これはbash構成ファイルです。

対話型(非ログイン)シェルの場合、構成は次のファイルから読み取られます。

  • $HOME/.bashrc

ログインシェルの場合、設定は次のファイルから読み取られます。

  • /etc/profile(常に調達)
  • $HOME/.bash_profile(これらのファイルの残りは、1つが見つかるまで順番にチェックされ、その後他のファイルは読み込まれません)
  • $HOME/.bash_login
  • $HOME/.profile

それらがどのように/いつ読み込まれるかを示す簡単な図が以下の画像にあります。

echo.bashrc.bash_profileに追加しました

Interactive Shell vs login Shell

詳細については、man bashを参照してください