現在ワークステーションにアクセスしているすべてのユーザーが利用できる必要があるいくつかのbash定義(関数、変数)を設定しようとしています。必要なすべてのコンテンツを含む/etc/profile.d/ディレクトリに拡張子が.shのシェルスクリプトを作成しました。理論的には、ユーザーがシステムにログインした後に実行する必要があります。
残念ながら、ユーザーがワークステーションを使用している場合、これらの機能は使用できません。現在の解決策はsource
手動で行うことです。
私を混乱させることは、ユーザーがSSHを介してリモートでログインしたときにこれらのスクリプトが実行されることです。 :|
私がここで何を見逃しているのでしょうか?
答え1
/etc/profile
/etc/profile.d
ログインシェルはのファイルを読み込みます。これは、子プロセスによって継承される環境変数の設定などの操作に役立ちます。このようにして、セッション内のすべてのプログラムで設定できます。関数定義などのシェル設定は、そのシェルインスタンス内でのみ使用できるため、利点はありません。シェル設定の場合は、セッションプロファイルの代わりにシェルプロファイルを使用する必要があります。 Bashの場合~/.bashrc
、および(アクティブ化されたシステムで)です/etc/bash.bashrc
。
詳細については、次を参照してください。すべてのシェルが読める「.bashrc」に対応するファイルはありますか?そして ログインシェルと非ログインシェルの違いは何ですか?