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


回答:


44

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


私が間違っている場合は、私を修正してください..profileはBourne互換シェルで使用されますが、.bash_profileはbashのみで使用されます..私は正しいですか?
Lakesh

2
@lakesh:はい、bourne互換性を提供するシェルはすべて読み取ります.profile。たとえば、bashおよびkshではなく、cshまたはtcsh。そして、zsh両方を提供shし、cshそれは両方を読み込みますので、互換性.profile.login、だけでなく、zsh特定のドットファイルを。
バハマ

このbashとkshについて読むチュートリアルはありますか?これらのことを聞いたことがない
...-lakesh

4
UNIX Shell Historyから始めることができます。
バハマ

25

起動時にshソースさ.profileれたオリジナル。

bash.bash_profile最初にソースしようとしますが、存在しない場合はソース.profile1になります。

bashとして起動された場合sh/bin/shへのリンクなど/bin/bash)または--posixフラグで起動された場合、エミュレートを試行しsh、のみを読み取ります.profile

脚注:

  1. 実際には、最初の1 .bash_profile.bash_login.profile

こちらもご覧ください:


2
すごい..ありがとう...特に参考に
...-lakesh

10

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

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

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

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

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

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

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

TENEX Cシェル

  • ~/.login ログインするとき
  • ~/.logout ログアウトするとき
  • ~/.tcshrc~./bashrcbash と同じ

変数$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シェルから分岐されています。BSDによるCシェルのサポート。C言語プログラミングに精通している場合は、構文が似ているので安心してください。

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

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

コーンシェル

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

ボーンアゲインシェル(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_profilebashの下で~/.profile動作しますが、BourneおよびKornシェルの下で動作します。


2
Chet RameyはBashのメイン開発者でした。
トリプリー

4

ログインシェルは、sshまたはコンソールでログインできる単純なシェルです。非ログインシェルは、誰かがログインできないシェルです。非ログインシェルは、多くの場合、プログラム/システムサービスによって使用されます。

あなたの第三の点に関しては。.bashrcシェルの各インスタンスで実行されるのは事実です。ただし.bash_profile、ログイン時にのみ使用されます。したがって、2つの別個のファイルの理由。

.profile環境変数$ PATHのように、特にBashに特に関連しないもののためのもので、いつでも利用できるはずです。.bash_profileログインシェルまたはログイン時に実行されるシェル専用です。


〜/ .profileと〜/ .bash_profileの違いは?
Lakesh

2
.profileは、環境変数PATHのようにBashに特に関連していないもののためのもので、いつでも利用できるはずです。.bash_profileは、ログインシェルまたはログイン時に実行されるシェル専用です。
アンゼンケス

それは私の質問何cosを....です....あなたの答えにそのステートメントを追加
lakesh

え?それは質問にさえ答えませんか?
ミケル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.