web-dev-qa-db-ja.com

キーボードショートカットからのアプリケーションの起動と端末の起動の違い

私が観察したこと:

Gnome-terminalでemacsと入力すると、.bashrcに変数が設定された同じ環境で起動します。コマンドemacsへのキーボードショートカットを使用すると、これらの変数がない環境で開きます。

質問:

  1. この動作の理由はありますか?
  2. .bashrcの設定を持つ環境でemacsを開くにはどうすればよいですか?
  3. ルートアクセスがある場合、これらの変数を「システム全体」に設定できますか?

追加の背景:関連するSO質問( emacsのR内からbash環境変数にアクセスする方法 )、およびAuctexのtexliveディストリビューションへのパスも必要です。端末内からemacを起動することと、emacsまたは/usr/bin/emacs23 %Fを呼び出すアプリケーションメニュー、Gnome-do、またはキーボードショートカットからemacを起動することの違い。

5
Abe

~/.bashrcは通常、ログイン後のセカンダリインタラクティブシェルで読み取られます。ログイン時にパラメーターを初期化する場合は、代わりに~/.profileを使用します。システム全体にパラメータを適用するには、/etc/profileを使用します。これは、bashが読み取る最初のファイルです。

物事を明確にするために、もう少し説明したいと思います。

  • ログインすると、ログインシェルは最初にグローバル/etc/profileを読み取り、次に~/.profileとそこに記載されているパラメーター/変数が初期化されます。ただし、XウィンドウシステムGUIが実行されているため、このシェルはターミナルとして表示されません。
  • ログイン後、セカンダリターミナル/ターミナルエミュレーターを開くときgnome-terminal~/.bashrcが読み取られ、その中で宣言されたパラメーター/変数は、2次端末でのみ使用可能です。この2次端末は、ログインシェルの子プロセスであることに注意してください。
  • メニューからアプリケーションを起動すると、ログインシェルの子プロセスとして実行され、その祖先プロセスからパラメーターを継承します。ただし、.bashrcはメインログインシェルでは使用できませんでした。そのため、アプリケーションでも使用できません。そのため、メニューから実行した場合、.bashrcの何もそれらのアプリケーションで使用できません。ただし、gnome-terminalを開いてそこからコマンドを実行すると、アプリケーションはgnome-terminalの子として起動され、.bashrcのパラメーターを継承します。
7
Samik