GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Menulis Skrip Shell yang Bersumber Secara Otomatis Ke /etc/profile?

Saya mendengar melalui selentingan bahwa file di /etc/profile akan secara otomatis bersumber dari bash saat login?

Saya mencoba menulis sesuatu yang sederhana ke /etc/profile:

 echo "echo 'foo'" > /etc/profile/foo.sh

tapi saya mendapatkan kesalahan aneh ini:

bash: /etc/profile/foo.sh: Not a directory

apakah ada cara yang benar untuk melakukan ini?

Jawaban yang Diterima:

/etc/profile adalah sebuah file. Karenanya kesalahan saat mencoba membuat /etc/profile/foo.sh .

/etc/profile.d adalah direktori yang Anda pikirkan. Skrip yang ditempatkan di sana bersumber saat login. Dalam contoh Anda, Anda ingin membuat /etc/profile.d/foo.sh .

Logika skrip di balik ini dan cara penarikannya dapat dilihat di bawah. Kode serupa ada di /etc/profile , /etc/bashrc , /etc/csh.cshrc dan /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
$

Contoh membuat dan menjalankan skrip seperti itu:

# 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
$

Informasi lebih lanjut di Apa yang dilakukan skrip di /etc/profile.d?


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Perbedaan Antara ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc …?

  3. Bagaimana Mengembalikan /etc/profile??

  1. CentOS / RHEL :Cara Memulihkan dari file /etc/passwd yang dihapus

  2. Menambahkan pengguna ke sudoer melalui skrip shell

  3. Cara memasukkan semua file dari direktori dalam skrip shell (/etc/init.d/iptables dalam kasus ini)

  1. Tambahkan baris ke file /etc/hosts dengan skrip Shell

  2. Menyesuaikan $PATH di /etc/profile tidak mempengaruhi root

  3. bagaimana cara memodifikasi /etc/hosts dari skrip shell?