web-dev-qa-db-ja.com

〜/ .profileと〜/ .bash_profileの違いは何ですか?

違いは何ですか ~/.profileおよび~/.bash_profile

71
lakesh

.profileは、Bourne Shellの元のプロファイル構成です(別名、sh)。 bash、Bourne互換シェルであると、それを読み取って使用します。一方、.bash_profilebashによってのみ読み取られます。これは、標準のBourne Shellと互換性のないコマンドを対象としています。

53
bahamat

元のshソース.profile起動時に。

bash.bash_profileを最初にソースしようとしますが、それが存在しない場合は.profileをソースします1

bashshとして開始される場合(たとえば、/bin/sh/bin/bashへのリンク)、または--posixフラグで開始される場合、 shをエミュレートし、.profileのみを読み取ります。

脚注:

  1. 実際、.bash_profile.bash_login.profileの最初の1つ

以下も参照してください。

27
Mikel

UNIXの世界には多くのシェルが存在しますが、そのほとんどは次のとおりです。

  • ボーンシェル/bin/sh(発明者:スティーブンボーン)
  • [〜#〜] bash [〜#〜](ボーンアゲインシェル):/bin/bash(発明者:ブライアンフォックス、GNUプロジェクト)の下(強力シェル)
  • Cシェル/bin/csh(発明者:Bill Joy、TCP/IPスタックの発明者)
  • Korn Shell/bin/ksh(発明者:Bell LabsのDavid Korn)
  • Zシェル/bin/zsh(強力なシェル)
  • TENEX Cシェル/bin/tcsh(Cシェルから派生)
  • Debian Almquist Shell/bin/dash(Almquist Shellから派生(NetBSDプロジェクトではash))(lennyから生まれたダッシュ)

しかしあなたの質問~/.bash_profile~/.profileについてです:

UNIXマシンにログインすると、管理者が/etc/passwdの最後のフィールドで選択したシェルに従って、次のようにホームディレクトリにリダイレクトされます。

mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash

シェルが実行され、デフォルトでは各シェルにloginlogoutのセットファイルがあります。 bashにログインすると~/.profileが実行され、logoutにログインすると~/.bash_logoutが実行されます。 ~/.bash_historyファイルは、入力コマンドを保持します。

各シェルの初期化ファイル

TENEX Cシェル

  • ~/.loginログインすると
  • ~/.logoutログアウトしたとき
  • ~/.tcshrc bashの~./bashrcと同じ

変数$histfileを履歴ファイルの名前として設定し、変数$historyを保持するコマンドの数として設定できます。

Zシェル

確かにそれは強力なシェルであり、もしあなたが自由な時間を得たなら、必ずそれに移行してください。

他のシェルを除いて、Zシェルには多くの構成ファイルと初期化ファイルがあります。

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin

注:$ZDOTDIRが設定されていない場合は、ホームセットです。

Cシェル

注:TENEX CシェルはCシェルから分岐されました。 CシェルはBSDでサポートされています。 C言語プログラミングに精通している場合は、構文が似ているので快適です。

~/.login
~/.cshrc
~/.logout

注:cshは古いです。代わりにtcshを使用してください。

Korn Shell

  • ~/.profile
  • rcファイル:ユーザー定義
  • ログアウトファイル:なし

ボーンアゲインシェル(BASH)

これは非常に強力なシェルであり、GNUプロジェクトの下で生まれ、Bourne Shellによって分岐されました。

~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history

ログインすると、bashは~/.bash_profileを実行し、~/.bash_profile~/.bashrcを実行します。確かに~/.bashrcはbashが実行しないため、bash初期化ファイルではありません。

ボーンシェル

死んだ。 man shを使っていても、dashのマニュアルを見ることができます。 [編集者注:dashに関するビットは、DebianおよびUbuntuのようなDebianベースのディストリビューションにのみ適用されます。]

あなたの答え

~/.bash_profileはbashで動作しますが、~/.profileはBourneおよびKorn Shellで動作します。

11
PersianGulf

ログインシェルは、sshまたはコンソールからログインできるシェルです。非ログインシェルは、誰かがログインできないシェルです。ログイン以外のシェルは、プログラム/システムサービスでよく使用されます。

3つ目のポイントは。それは本当です .bashrcはシェルの各インスタンスで実行されます。しかしながら .bash_profileはログイン時にのみ使用されます。したがって、2つの別々のファイルの理由。

.profileは、環境変数$ PATHなど、Bashに特に関係のないもの用であり、いつでも使用できるようにする必要があります。 .bash_profileは、ログインシェルまたはログイン時に実行されるシェル用です。

5
anzenketh