1. ホーム
  2. bash

[解決済み] ログイン・シェルとインタラクティブ・シェルの違いは何ですか?[クローズド]

2023-03-31 20:59:40

質問

とは何ですか? login shellinteractive shell とは何か、そして .bash_profile.bashrc ?

どのように解決するのですか?

<ブロッククオート

対話型シェルとは、非オプション引数を指定せずに起動するシェルのことです。 s が指定されない限り、-c オプションを指定せずに起動され、入力とエラー出力が共にターミナルに接続されたシェルです。 入力とエラー出力が共にターミナルに接続されている (isatty(3) で決定される) シェル、または isatty(3) によって決定される) 、または -i オプションで起動されたものである。

対話型シェルは、一般に、ユーザーの ターミナルに書き込みます。

[ gnu bash マニュアル ]

A ログインシェル は、ログインするためのシェルです。 ログインシェルは ps -f のリストにあるログインシェルは、例えばプログラム名の最初にハイフンが付いています。

root      3561  3553  0 09:38 pts/0    00:00:00 -bash
qa        7327  3432  0 10:46 pts/1    00:00:00 -bash

アン 対話型シェル は、標準入力 (通常はターミナル) からコマンドを読み込むものです。

例えば、xterm やターミナルエミュレータを使って bash にログインする場合、以下のようになります。 putty のような xterm や端末エミュレータを使って bash にログインすると、そのセッションはログインシェルであると同時に対話型シェルにもなります。 もし、あなたが bash と入力すると、対話型シェルになりますが、これはログインシェルではありません。

シェルスクリプト (シェルコマンドを含むファイル) を実行した場合は、ログインシェルでも対話型シェルでもありません。

起動ファイル はbashで高度に調整可能です。

ログインしたbashシェルが起動されたときに /etc/profile がソースされます(現在の環境で実行されます)。 その後、3つのファイルが存在するかチェックされます。 これらのファイルのチェックは、この順番で行われます。

もし /etc/profile が存在する場合、それをソース(実行)する

もし ~/.bash_profile が存在する場合、それをソース(実行)する

もし ~/.bash_login が存在する場合、それをソース(実行)する

もし ~/.profile が存在する場合、それをソース(実行)する

一致するファイルが見つかれば、他のファイルが存在しても無視されます。また /etc/bashrc ファイルの両方が使用されるかもしれません。 ~/.bash_profile~/.bashrc というファイルを作成します。 ということになります。 /etc/bashrc ファイルは、ログインシェルであろうと非ログインシェルであろうと、bash のすべての対話的な呼び出しでソースされます。

ですから .bashrc ファイルを要求するたびに、新しい 対話型シェル . これにはシェルスクリプトは含まれません。 通常、変数やエイリアス、関数などはこのファイルに置かれます。

Bash シェル スクリプトは、適切な指示があれば別のファイルを読み込みます。 もし、ユーザーが (通常、自分自身の .bash_profile で) 変数 BASH_ENV という変数があり、これにファイル名を指定すると、 スクリプトがこれを読み込むようになります。 この変数が設定されていない(そしてエクスポートされている)場合、bash スクリプトはいかなるスタートアップ ファイルも読みません。