/ etc / profile内のファイルは、ログイン時にbashによって自動的に供給されるとブドウの木を通して聞きましたか?
/ etc / profileに簡単なものを書いてみました:
echo "echo 'foo'" > /etc/profile/foo.sh
しかし、私はこの奇妙なエラーを受け取りました:
bash: /etc/profile/foo.sh: Not a directory
これを行う正しい方法はありますか?
承認された回答:
/etc/profile
はファイルです。したがって、/etc/profile/foo.sh
を作成しようとするとエラーが発生します 。
/etc/profile.d
あなたが考えているディレクトリです。そこに配置されたスクリプトは、ログイン時に供給されます。この例では、/etc/profile.d/foo.sh
を作成します。 。
この背後にあるスクリプトロジックと、それがどのように取り込まれるかを以下に示します。同様のコードが/etc/profile
にあります 、/etc/bashrc
、/etc/csh.cshrc
および/etc/csh.login
。
$ grep -A 8 ^for.*profile.d /etc/profile
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
$
このようなスクリプトを作成して呼び出す例:
# echo id >/etc/profile.d/foo.sh
# su - steve
Last login: Sat Jun 23 21:44:41 UTC 2018 on pts/0
uid=1000(steve) gid=1001(steve) groups=1001(steve),4(adm),39(video),1000(google-sudoers) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$
/etc/profile.dのスクリプトは何をしますか?
の詳細情報