「コマンドをログインシェルとして実行」は何をしますか?


28

いくつかの別個のプログラムがインストールされていますが、そのうちのいくつかは、GUI端末設定に移動し、「ログインシェルとしてコマンドを実行」オプションを有効または無効にして、どちらかを動作させる必要があります。

例:

Ruby on Railsをインストールしました。残念ながら、ターミナルオプションに移動し、「ログインシェルとしてコマンドを実行」を有効にして、PATHに含める必要があります。

sexy-bash-promptをインストールするまで、これはあまり問題ではありませんでした。これは、オプションが無効になっている場合にのみ機能します。

だから私の質問は本質的に:「ログインシェルとしてコマンドを実行する」は何をしますか?ログインシェルとして実行するときに実行が無効になっているときに実行するものを取得する方法はありますか?

回答:


31

シェルがBash(Ubuntuのデフォルト)であると仮定すると、次の違いがあります。

  • ログインシェルとして実行する場合、Bashは起動時に~/.bash_profile(または、存在しない場合は~/.profile)読み取ります。場合によっては、このファイルも読み取り~/.bashrcます。

  • 非ログインシェルとして実行する場合、Bashはを読み取ります~/.bashrc

それでは、なぜログイン/非ログインシェルとして実行しているときに異なる動作が見られるのですか?あなたの.bash_profile/ .profileはあなたとは異なることをしているから.bashrcです。

私はあなたのケースでお勧めするソリューションをすることで、コピーに対して行われたカスタマイズ.bash_profile/ .profileペーストにそれらを.bashrcし、無効「ログインシェルとして実行]コマンドを」。


ああ 私はそれがどのログインプロファイルを読んでいるかに関係していると考えました(.bashrcをソースとすると、私が抱えていたいくつかの問題を修正します)。恐ろしく書かれた質問でごめんなさい。
AlbertEngelB

簡潔な説明をありがとう。カスタマイズを.bashrcに保持し、.bash_profileを.bashrcのソースとして使用することは珍しくありません。ログイン固有のカスタマイズは、.bash_profileのみに保存する必要があります。
MichaelZ

1
なぜ.bashrcを.bash_profileにソースし、ログインシェルをオンのままにしないのですか?それは可能ですか?
ネファリオ博士16年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.