GNU/Linux >> Linux Esercitazione >  >> Linux

Come scrivere uno script di shell con origine automaticamente in /etc/profile?

Ho sentito attraverso la vite che i file in /etc/profile verranno automaticamente reperiti da bash al momento dell'accesso?

Ho provato a scrivere qualcosa di semplice in /etc/profile:

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

ma ho ricevuto questo strano errore:

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

c'è un modo corretto per farlo?

Risposta accettata:

/etc/profile è un file. Da qui l'errore durante il tentativo di creare /etc/profile/foo.sh .

/etc/profile.d è la directory a cui stai pensando. Gli script inseriti lì vengono originati all'accesso. Nel tuo esempio, vorresti creare /etc/profile.d/foo.sh .

La logica dello script alla base di questo e come viene inserita può essere vista di seguito. Un codice simile è in /etc/profile , /etc/bashrc , /etc/csh.cshrc e /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
$

Esempio di creazione e richiamo di tale script:

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

Maggiori informazioni su Cosa fanno gli script in /etc/profile.d?


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Determinazione del percorso per lo script della shell di origine?

  3. Come viene aggiornato /etc/motd?

  4. Come ripristinare /etc/profile??

  5. Aggiunta di utenti ai sudoer tramite script di shell

Come scrivere uno script Bash con esempi

Come utilizzare le variabili negli script della shell

Come scrivere uno script di shell in Ubuntu

Come eseguire un comando in uno script della shell?

Come posso ripristinare un chmod nella directory etc?

Come configurare /etc/issues per mostrare l'indirizzo IP per eth0