web-dev-qa-db-ja.com

.profileと.bash_profileの違いは何ですか?システムに.profileファイルがないのはなぜですか?

だから私はLinuxにかなり慣れていないので、最近ネットブックにFedora 19をインストールしました。 LinuxとCLIをより深く理解したいので、現在読んでいます Linuxの学習:ハードウェイ

演習3では、作成者は次のコマンドを提供します。

  • ls -al
  • 猫のプロフィール

私はこれらの指示に従おうとしますが、役に立ちません。 ls -alで確認できるように、ユーザー名ディレクトリに.profileファイルがありません。私が学んだことから、.bash_profileと.profileファイルは実質的に同じです。私の調査から結論付けた唯一の違いは、.bash_profileが最初にチェックされることです。

Linuxで同じ関数に複数のファイルがあるのはなぜか、作成者が.bash_profileではなく.profileを使用しているのはなぜですか(システムが.bash_profileを最初に検出したときに.profileが読み取られない場合)私のシステムに.profileファイルがないのはなぜですか?

12
Emiroe

.profileは、shとして知られる元のBourne Shellにさかのぼります。 GNU Shell bashは(そのオプションに応じて)Bourne Shellのスーパーセットであるため)両方のシェルは同じ起動ファイルを使用できます。つまり、shコマンドは.profileに入れられます

たとえば、aliasbashの有効な組み込みコマンドですが、shには不明です。したがって、ホームディレクトリに.profileのみがあり、その中にaliasステートメントを置くと、shは文句を言うでしょう。したがって、.profileファイルが存在しない場合にのみbashが読み取るシェル初期化コマンドを含むbash固有のファイルがあります。

実際、一部のインストールではこれは少し単純化しすぎており、Fedoraについてはよく知りません。 bashでは、ホームディレクトリ内のファイルの前に/etc/profileがシェルによって読み取られます。システム全体の初期化スクリプトがある場合、それはしばしば次のようになります

if there is a $HOME/.profile:
   source it
elseif bash is my Shell and there is a $HOME/.bash_profile:
   source that

なぜそうなのですか?何十年にもわたるシェル方言での互換性の試み。チュートリアルがそのように書かれているのはなぜですか? Bourne Shellはあまり使用されないことが多く、bash以外にBourneのようなShellがあることを知らない人もいます。 (制限された)Bourne構文がプラットフォーム間の互換性を高めるために使用されている場合でも、POSIX互換モードでdashまたはbashによって実行されることがよくあります。実際、実際のBourne ShellソースはおそらくUnix System Vの著作権コンポーネントであり、これは 現在はNovellのプロパティであると思われます ですが、彼らが何をしているのかはわかりません。

初心者のユーザーは、$HOME/.profileまたは$HOME/.bash_profileのいずれかを使用しますが、両方を使用することはできません。 .bash_profileをすでに使用しているため、インストールに必要なシステム固有の要素が含まれている可能性があります。

13
msw