ディレクトリx.sh
に/etc/profile.d/
という名前のファイルを作成したため、すべてのユーザーがアクセスできるはずです。コマンドSudo su other_user
を使用して(ログインしているユーザーの)ターミナルで現在のユーザーを変更すると、x.sh
ファイルで設定した変数にアクセスできるはずですが、アクセスできません。希望どおりに変数にアクセスできるように設定するにはどうすればよいですか?
/etc/profile
(したがって/etc/profile.d
)はログインシェル用に読み取られます。 Sudo su other_user
はログインシェルを実行しません。これは悪い習慣であり、環境を残します 元のユーザーからの変数で汚染されています 。代わりに、次のコマンドのいずれかを実行する必要があります。
Sudo -iu other_user
Sudo su - other_user
これらは両方ともログインシェルを起動するため/etc/profile
をロードし、どちらも比較的クリーンな環境で起動します。
ただし、理想的には、可能であれば変数を/etc/environment
に設定する必要があります。そのファイルはsu
によって読み取られるべきです。したがって、ログインシェルが開始されたかどうかに関係なく、そこにある変数が利用可能になります。ただし、そのファイルはシェル構文をサポートしていないため、変数を設定するために複雑なシェルコードが必要な場合は使用できません。