Ne ocupăm de dosare

Recent am întâlnit următoarea problemă: aplicația nu a salvat configurația umask. specificate în profilul utilizatorului root sau în fișierul / etc / profile. O mică înțelegere a problemei, mi-am dat seama că aplicația folosește doar acea setare umask. care este specificat în / etc / bashrc. fără a lua chiar acele valori care sunt propriile sale scripturi de pornire.







După un mic studiu al întrebării, mi-am dat seama ce funcție au aceste fișiere, cum diferă și cum sunt executate. Această întrebare nu este ridicată frecvent, așa că am crezut că ar fi util să vă spun despre asta.

Ce este fișierul / etc / profile?

Dacă utilizați Linux, atunci probabil știți fișierele .profile sau .bash_profile. plasat în directorul dvs. de acasă. Aceste fișiere sunt utilizate pentru a specifica elementele de mediu pentru shell-ul utilizatorului. Astfel de elemente, cum ar fi, de exemplu, umask. și variabile precum PS1 sau PATH.

Fișierul / etc / profile nu este foarte diferit de aceste fișiere. Este folosit pentru a specifica variabilele de mediu la nivelul întregii sisteme în cochilii utilizator. Uneori acestea sunt aceleași variabile ca și în .bash_profile. dar acest fișier este folosit pentru a specifica PATH inițial sau PS1 pentru toți utilizatorii coajelor sistemului.

/etc/profile.d

Pe lângă specificarea elementelor de mediu, fișierul / etc / profile execută scripturi din /etc/profile.d/*.sh. Dacă doriți să setați propriile variabile de mediu pentru întregul sistem, ar trebui să plasați configurația în scriptul shell din /etc/profile.d.

Ce este fișierul / etc / bashrc?

În afară de .bash_profile. În directorul dvs. de acasă, veți vedea, de asemenea, adesea un fișier .bashrc. Acest fișier este pentru setarea aliaselor pentru comenzile și funcțiile folosite de utilizatorii shell-ului bash.







La fel ca / ​​etc / profile este o versiune la nivel de sistem a .bash_profile. fișierul / etc / bashrc din Red Hat și fișierul /etc/bash.bashrc în Ubuntu sunt versiunea la nivel de sistem a .bashrc.

Merită remarcat faptul că, în Red Hat, implementarea / etc / bashrc execută, de asemenea, scriptul shell din /etc/profile.d. dar numai dacă shell-ul utilizatorului este un Shell interactiv (adică Shell de conectare)

Când se utilizează aceste fișiere?

Când fiecare dintre aceste fișiere este executat depinde de tipul de login care este executat. În Linux, există două tipuri de cochilii de conectare - Shell-uri interactive și Shell-uri non-interactive. O coajă interactivă este utilizată atunci când utilizatorul poate interacționa cu shell-ul, i. E. de exemplu, o solicitare tipică de bash. O coajă non-interactivă este utilizată atunci când utilizatorul nu poate interacționa cu shell-ul, i. E. bash scripturi.

Diferența este simplă: fișierul / etc / profile este executat numai pentru shell-uri interactive, iar fișierul / etc / bashrc este pentru fișiere interactive și non-interactive. De fapt, în Ubuntu, fișierul / etc / profile apelează direct fișierul / etc / bashrc.

Shell interactiv și Shell non-interactiv: Comparație

Pentru a compara cochilii interactive și non-interactive, voi adăuga o variabilă atât fișierelor / etc / profile și /etc/bash.bashrc din Ubuntu.

Shell interactiv

Mai jos este un exemplu de coajă interactivă. În acest caz, atât fișierele / etc / profile și /etc/bash.bashrc au fost executate.

Coperta non-interactivă

În acest exemplu, executăm comanda prin shell-ul SSH, care nu este interactiv; Deoarece aceasta este o coajă non-interactivă, numai fișierul /etc/bash.bashrc este executat.

concluzie

În cazul meu, aplicația nu recunoaște valoarea umask-ului. specificate în fișierul / etc / profile. dar recunoaște valoarea din fișierul / etc / bashrc. Aceasta indică faptul că subprocesul începe ca o coajă non-interactivă. Deoarece modalitatea propusă de modificare a variabilelor de mediu este adăugarea unui script shell în /etc/profile.d. în cazul meu este mai bine să setați valoarea umask în fișierul / etc / bashrc.







Articole similare

Trimiteți-le prietenilor: