「ログイン」と「インタラクティブ」bashシェルの違いは何ですか


50

「ログイン」と「インタラクティブ」bashシェルの違いは何ですか?以下にウィキペディアを引用しましたが、誰でもより良い答えを出すことができますか?

編集:これはコミュニティWikiであるため、終了するために投票するのではなく、どの状況でどのタイプの$ SHELLが必要かを示す例を提供できます。

起動スクリプト

Bashが起動すると、さまざまな異なるスクリプトでコマンドを実行します。

Bashが対話型ログインシェルとして呼び出されると、最初に/ etc / profileファイルが存在する場合、そのファイルからコマンドを読み取り、実行します。そのファイルを読み取った後、〜/ .bash_profile、〜/ .bash_login、および〜/ .profileをこの順序で検索し、最初に存在する読み取り可能なコマンドからコマンドを読み取り、実行します。

ログインシェルが終了すると、Bashは〜/ .bash_logoutファイルが存在する場合、ファイルからコマンドを読み取り、実行します。

ログインシェルではないインタラクティブシェルが起動すると、Bashは〜/ .bashrcからコマンドを読み取り、実行します(そのファイルが存在する場合)。これは、-norcオプションを使用して禁止できます。--rcfileファイルオプションは、Bashに〜/ .bashrcではなくfileからコマンドを強制的に読み取らせて実行させます。


私は質問を編集して、半分の嫌悪感のあるサイトルールにより合うようにしました。有用な情報を削除したいという願望を理解することはないと思います
Gareth

7
なぜ人々はこの質問に投票するのですか?私には完全に合法的なようですか?
duffbeer703 09年

2
うーん、あなたの質問から答えを取り出して、答えとして投稿してください。自分の質問に答えても構いません。
デロバート2009年

2
区別がわかりにくいため、非常に有効な質問です。たとえば、xdmを介してグラフィカル環境にログインしてxtermを実行すると、インタラクティブシェルが表示され、ログインシェルのスタートアップファイルは実行されないことに注意してください。
pjc50

回答:


16

ログインシェルのプロファイルファイルでは、セッション中に使用するものを設定できます。これらは一度だけ実行する必要があります。いくつかのアイデア:

  • 接続元のIPアドレスを含む一時ファイルを作成します。後で、ファイアウォールルールを設定するスクリプトにそのファイルを含めることができます。
  • ssh-agentを実行し、SSHキーを要求し、SSHエージェントの環境変数をファイルに保存します。
  • それが限られたマシンであり、同僚がお互いのログインを認識したい場合は、ログインを知らせるメッセージを書き込みます。

非ログインシェルのファイル(.bashrc)で、シェルを構成する必要があります。

  • 派手なプロンプト
  • エイリアスを設定する
  • 履歴オプションを設定する
  • カスタムシェル関数を定義する
  • 環境変数をエクスポートします(システム全体の設定が悪い場合はPAGER、EDITORかもしれません)
  • に保存されたssh-agent変数をロードします .bash_profile

通常、.bashrcfrom .bash_profileには次のものを含めます。次に、ログインシェルはすべてのカスタマイズを取得し、.bash_profileファイルはすでににあるものを複製する必要はありません.bashrc

[[ -f ~/.bashrc ]] && . ~/.bashrc

3
ログインシェルは、マシンを初めて使用するときに最初に起動するシェルですか?それ以降に開く他のすべてのシェルは、対話型である場合とそうでない場合があります。cronから実行しているシェルですか?インタラクティブではないようですが、ログインですか?マシン上にいない場合はどうなりますか?これらは未回答のままになっている質問です
フランソワボーソレイユ

4
さて、私が理解できる答えである:linuxquestions.org/questions/linux-general-1/...
フランソワボーソレイユ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.