.bashrcと.bash_profileの違い
みなさん、こんにちは。インターン生の@shunkurosakiです。
今回は、.bash_profileと.bashrcの違いについて記事を書いていきます。
インターン中にLangmatchというサービスの開発を進める中で、database.ymlに記述されている内容が、開発者の環境ごとに異なるという場面に遭遇しました。しかも、パスワードが書かれたコードをGITで管理したくありません。
このような場合、データベースの接続情報などを環境変数として.bash_profileに設定することで、解決することができます。
# database.yml default: &default adapter: mysql2 encoding: utf8 database: <%= ENV['HOGE_DEVELOPMENT'] %> username: <%= ENV['HOGE_USERNAME'] %> password: <%= ENV['HOGE_PASSWORD'] %> socket: <%= ENV['HOGE_SOCKET'] %>
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export HOGE_USERNAME=root export HOGE_PASSWORD=hogehoge export HOGE_SOCKET=/tmp/mysql.sock export HOGE_DATABASE_NAME_DEVELOP=hoge_development export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"
bash_profileと.bashrcの違い
ユーザーのホームディレクトリの中には、.bash_profile以外にも、.bashrcと言ったファイルが入っています。しかも、.bashrcに.bash_profileと同じ内容を記入しても同じように動作します。それでは、.bash_profileや.bashrcはどのような役割を持っているのでしょか。
.bashとは
「bash」(ばっしゅ)はLinuxで用いられる標準のシェル・プログラムです。windowsではコマンドプロンプトが、MacOSではFinderがこれに当たります。シェルとは、ユーザからの操作を受け付けて、与えられた指示をOSの中核部分に伝えるソフトウェアのことを指します。キーボードに打ち込まれた文字を解釈して、対応した機能を実行するようにOSに伝えるのは、シェルのお仕事です。そして、このシェルが複数の処理をまとめて行う場合、シェルスクリプトの中に、複数の動作を書き込みます。
.bash_profileとは
.bash_profileはログイン時だけに実行される設定ファイルです。ログイン時に一度だけ読まれればいいもの(例えば、環境変数など)はこのファイルに書き込むことが一般的です。
.bashrcとは
.bashrcはログイン時に.bash_profileから読み込まれ実行されます。また、別のシェルが起動したときにもその度に実行されます。
つまり、ログイン時に一度だけ実行したいものは.bash_profileに、シェルが起動する度に実行したいものは.bashrcに書き込みます。
基本的なことですが、一つ一つ丁寧に学んでいこうと思います!
それではまた。