私の~/.bashrcと~/.profileでいくつかの変数をいくつかのファイルパスに設定しました.
export MY_VAR1="/path/to/somewhere"
私の〜/ bin /(PATHに追加)には、設定されている変数に依存するいくつかのスクリプトがあります。
端末でこのコマンドを実行すると、期待どおりに機能します。
ところで、ノーチラスでスクリプトをダブルクリックして実行しようとすると、まるでこれらの変数が設定されていないかのように実行されます。
GUIユーティリティを使用してスクリプトの1つをGnomeの「スタートアップアプリケーション」に追加したり、「メインメニュー」GUIユーティリティを使用してGnomeメニューに追加したりしても同じことが起こります。
ログイン時に実行される ~/.profile にこれらの変数を含めたので、 gnome と nautilus およびそれらが生成するプロセスがこれらの変数にアクセスできると考えたはずです。
GnomeとNautilusはどちらもログインしたユーザーとして実行されます。 ~ / binのすべてのスクリプトの上にbash shebangがあります。
私は初めてbashスクリプトに触れました。はっきりしたことがなくなったらすみません。私はDebian WheezyとGnome3を使っています。
答え1
これは、Xセッションを開始すると~/.bashrc
合計を読み取らないためです~/.profile
。通常、デスクトップ管理者は init スクリプトで root または独自のユーザーとして起動します。デスクトップマネージャの起動スクリプトに達すると、生成されたプロセスは通常initプロセスの環境を持ちます。 (この時点ではあまり成熟していないinitの実装については言及しません。)
ログインすると、その環境を継承する子プロセスが作成されます。子プロセスはuidとrunに権限を与え、/etc/X11/Xsession
通常はすべてのスクリプトを実行します/etc/X11/Xsession.d
。これらのスクリプトは通常、環境変数を設定するか、デスクトップ環境の呼び出しを具体的に変更します。
そのディレクトリから40x11-common_xsessionrc
。すべてのGUIプロセスはこのプロセスで作成されるため。~/.xsessionrc
/etc/X11/Xsession.d
/etc/X11/Xsession.d
~/.xsessionrc
~/.xsessionrc
はスクリプトファイルなので、ソースコードを使用できますが、~/.bashrc
これは本当に悪いスタイルです。これは、DEソースコードがその環境を継承し、~/.bashrc
bashソースコードを再利用して不要な副作用を引き起こす可能性があるためです。
~/.myenvironmentvariables
ただし、厳密な(環境)変数定義を含め、ソースが含まれていることを使用する~/.bashrc
ことは完全に許可されています~/.xsessionrc
。これにより、すべてのプロセスがで指定された変数~/.myenvironmentvariables
、特にNautilusからダブルクリックしたシェルスクリプトを継承します。