GNU/Linux >> Linux の 問題 >  >> Linux

自動的に供給されるシェルスクリプトを/etc/ profileに書き込む方法は?

/ 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のスクリプトは何をしますか?

の詳細情報
Linux
  1. 〜/ .profile、〜/ .bashrc、〜/ .bash_profile、〜/ .gnomerc、/ etc / bash_bashrc、/ etc / screenrcの違い…?

  2. ソースシェルスクリプトへのパスを決定しますか?

  3. / etc / motdはどのように更新されますか?

  1. シェルスクリプトを使用して /etc/hosts ファイルに行を追加します

  2. 失敗した場合にLinuxバックグラウンドプロセスを自動的に再起動する方法は?

  3. ディレクトリのすべてのファイルをシェル スクリプトに含める方法 (この場合は /etc/init.d/iptables)

  1. CentOS / RHEL :削除された /etc/passwd ファイルから回復する方法

  2. /etc/issues をセットアップして eth0 の IP アドレスを表示する方法

  3. /etc/hosts をシェルスクリプトから変更するには?