Folosind partea unix 10

Salvați setările pentru a le restabili la următoarea pornire a shell-ului de comandă

Puteți configura shell-ul UNIX® pentru a vă salva timpul, efortul și adapta-l stilului dvs. de lucru. Fișierele de pornire ale shell-ului vor salva setările și vor restabili din nou mediul din sesiunea shell-ului vechi, chiar și pe un alt computer.







Dacă lucrați cu un program de mult timp, puteți afla totul despre ce este destinat. Mai mult, programatorul o va folosi ca virtuoz - instrumentul său muzical.

Sper că abilitățile cititorului acestei serii de articole se apropie deja de nivelul UNIX® guru, el se întoarce la oracolul omniscient omului pentru mai multe cunoștințe, el știe combinația magică de comenzi care efectuează o conversie de date cu adevărat alchimic. Lucrul în linia de comandă este ușor și coaja este convenabilă și familiară pentru el.

Nivelul următor de abilități - este o utilizare masterie a shell-ului de comandă.

O cochilă mare și puternică

Am învățat deja multe modalități de a configura mediul shell:

  • Puteți selecta shell-ul de comandă UNIX care vă place cel mai bine. Bourne shell (bash) are putere; Altele, cum ar fi shell-ul Z, oferă noutăți și îmbunătățiri ușor de utilizat pe care unii utilizatori le consideră extrem de utile.

Pentru a afla care shell-uri sunt instalate pe computer, trebuie să executați comanda cat / etc / shells. Pentru a modifica shell-ul comenzii curente în oricare dintre liste, apelați comanda chsh. Iată un exemplu de modificare a coajăcii shell / bin / zsh - Z. (Utilizatorul introduce textul cu caractere aldine.)

  • Puteți crea aliasuri scurte pentru comenzile lungi utilizate frecvent.
  • Variabile de mediu. cum ar fi PATH (care conține căile pe care programele sunt căutate) și TZ (care definește fusul orar) stochează setările și afectează toate procesele care au început.

    Variabila PATH este deosebit de utilă. De exemplu, în cazul în care aveți nevoie pentru a rula o versiune locală de Perl, aveți posibilitatea să modificați PATH pentru a rula Perl de la / usr / local / bin / perl în loc de obicei localizat în versiunea / usr / bin / perl standard Perl.

    De asemenea, aplicațiile UNIX utilizează adesea variabile de mediu pentru a particulariza. De exemplu, în cazul în care terminalul (sau emulator de terminal) are această capacitate, puteți face ls (ceea ce elimină conținutul directorului) este notat cu diferite culori de diferite tipuri de fișiere, folosind variabile de mediu și LSCOLORS CLICOLOR.

  • Puteți re-rula comenzi din istoria comenzilor shell-ului. Istoricul comenzilor stochează apelurile formate anterior, permițându-vă să reluați comenzile anterioare. Multe cochilii de comandă vă permit, de asemenea, să modificați aceste comenzi anterioare, creând altele noi bazate pe acestea. De exemplu, shell-ul de comandă Bash folosește caracterul "cover" (^) pentru a înlocui comanda:
  • Puteți scrie script-uri de shell pentru a efectua operații complexe dacă utilitarele existente UNIX și comenzile built-in shell nu pot face față sarcinilor pe care trebuie să le efectuați în mod regulat.
  • Desigur, cu atât de multe oportunități de a configura o comandă shell, ar fi frumos să fie în măsură pentru a salva modificările și să le reutilizați într-un alt moment, într-o altă sesiune (după finalizarea o sesiune și începutul unuia nou) și chiar și pe alte stații de lucru (presupunând că aceeași coajă este utilizată pe computere diferite).

    Scripturile de pornire pentru shell furnizează această capacitate. Când shell-ul pornește și când termină, shell-ul rulează mai multe script-uri pentru inițializarea și ștergerea mediului, respectiv. Unele scripturi de pornire au drepturi de sistem (administratorul de sistem le poate configura), în timp ce altele sunt deschise pentru modificări de către utilizatorii obișnuiți.

    Scripturile de pornire nu arată ca fișierele Microsoft® Windows® INI. Așa cum ar trebui să fie clar din numele, script-urile de pornire a shell-ului sunt scripturi full shell, astfel de programe mici, care efectuează un fel de muncă. Aceste scripturi sunt executate atunci când shell-ul este pornit sau terminat, iar mediul este setat corespunzător.

    Fugiți-mă!

    În mod tipic, fiecare shell oferă mai multe scenarii de pornire și are propria ordine de încărcare a acestor scripturi. Cel puțin, există un sistem și un utilizator (unul pentru fiecare utilizator) fișier de pornire al cochiliei. Luați în considerare secvența internă a script-urilor de pornire a shell-ului într-o cascadă: se acumulează efectul rularea mai multor scenarii (eventual) și puteți șterge și schimba parametrii stabiliți de unul dintre scenariile inițiate anterior.

    De exemplu, administratorul de sistem poate seta parametrii de coajă pentru întregul sistem - ceva care include numele de utilizator, directorul curent de lucru și numărul de acțiuni stocate în istoricul comenzilor - în scriptul sistemului de pornire. Cu toate acestea, puteți înlocui aceste setări prin setarea acestora în scriptul de pornire, după cum este necesar de către utilizator. Cu toate acestea, dacă nu faceți modificări ale setărilor de sistem, ele se vor reflecta numai în shell-ul de funcționare și în mediul său.

    De obicei, scripturile de sistem, cum ar fi / etc / profile sunt executate în primul rând, iar administratorul de sistem le poate gestiona. Scripturile de pornire a sistemului sunt concepute pentru a facilita utilizarea resurselor specifice sistemului. De exemplu, în cazul în care administratorul de sistem preferă să utilizeze o versiune mai nouă a Secure utilitate Shell (SSH), deoarece este închis-cunoscut încălcarea securității, se poate seta inițializarea variabilei de mediu PATH în / usr / local / bin: / bin: / usr / bin, setarea astfel, directorul / usr / local / bin ca calea prioritară pentru executarea fișierelor executabile. (Dacă comanda nu este găsită în / usr / local / bin, shell-ul va continua să îl caute în / usr / bin). Fișierele de pornire a sistemului sunt, de asemenea, utilizate pentru a seta numele imprimantei și a oferi utilizatorilor opțiuni rezonabile de linie de comandă.

    După ce script-urile de sistem au fost executate, shell-ul pornește fișierele de boot utilizator. Un script de pornire personalizat este locul cel mai potrivit pentru a stoca aliasurile de comenzi preferate, setările de mediu și alte setări necesare.

    Planificarea unui mare Bash

    Numărul și numele scripturilor de pornire ale diferitelor coajă sunt, de asemenea, diferite. Să ne uităm la secvența de script-uri de încărcare din shell-ul Bash, / bin / bash. Bash poate fi găsit pe aproape toate sistemele UNIX și Linux, de obicei shell-ul de comandă standard pentru sistemele noi instalate și noii utilizatori. Este, de asemenea, un reprezentant foarte tipic al cochilii de comandă, care poate servi ca o bună platformă pentru a demonstra munca. (Dacă utilizați o coajă diferită de paginile de documentație și manuale, puteți afla numele și ordinea scripturilor de încărcare.)







    Bash are șase script-uri de pornire, dar nu toate vor fi pornite. Chiar dacă toate cele șase scenarii există și sunt disponibile, Bash va executa doar o parte din ele.

    Primul Bash rulează scriptul de sistem / etc / profile, dacă există și este disponibil pentru citire de către utilizator. După ce executați acest script, Bash caută scripturi

    /.bashrc - în această ordine, - unde

    - alias standard pentru directorul de domiciliu al utilizatorului (disponibil și prin variabila $ HOME). Când Bash termină, shell-ul caută fișierul

    În vechile zile ale UNIX (cu puțin mai puțin de două decenii în urmă), utilizatorii au accesat de obicei un echipament UNIX printr-un terminal. Ei au tastat ID-ul de utilizator și parola în prompt, iar sistemul a dat naștere unui nou proces de shell pentru a porni sesiunea de utilizator. În acest mediu, logon coajă diferit de alte instanțe ale cojii (cum ar fi script-uri de pornire) nume: numele procesului, fiecare coajă lansat atunci când vă conectați, precedat de o cratimă, de exemplu, -bash. Acest nume special - cel mai vechi artefact UNIX - îi spune shell-ului să efectueze o configurație specială pentru intrare.

    Ce este un shell interactiv este mai ușor de explicat: shell-ul este interactiv dacă percepe datele de intrare (de la un dispozitiv de intrare standard) și scoate rezultatul (la un dispozitiv de ieșire standard). Terminalele X au înlocuit textul, dar convențiile și paradigmele modurilor de operare ale cochililor de comandă au rămas aceleași. De obicei, terminalul X pornește Bash sub numele -bash. care indică necesitatea de a porni o secvență de încărcare a script-urilor de conectare.

    În cazul lui Bash, shell-ul de conectare interactiv rulează scriptul / etc / profile, dacă există. (O shell non-interactiv lansează, de asemenea, / etc / profile dacă bash este apelat de comanda bash-login.) Colacul interactiv apoi caută fișierul

    /.bash_profile și execută acest script dacă există și poate fi citit de către utilizator. În caz contrar, shell-ul continuă să încerce să execute

    /.bash_login. Dacă acest fișier nu există sau nu poate fi citit, atunci Bash încearcă în cele din urmă să execute fișierul

    /.profile. Bash rulează numai un singur script de pornire personalizat: scripturile de pornire se termină când scriptul utilizatorului se termină. Când shell-ul comenzii iese, acesta pornește fișierul

    Dacă Bash este interactiv, dar nu rulează pentru conectare, încearcă să citească fișierul

    /.bashrc. Nici un alt scenariu nu se execută. Dacă Bash nu este interactiv, accesează variabila BASH_ENV și execută fișierul specificat acolo.

    Desigur, puteți schimba această secvență sunând propriile fișiere din scenariile standard. Un alias special pentru coajă. (sau sinonimul său sursă) execută un alt script de shell. De exemplu, dacă este necesar

    /.bashrc au fost executate pentru orice coajă interactivă, scrieți comanda:

    /.bash_profile. Când shell-ul de comandă primește o comandă. (punct), execută scriptul cu numele specificat imediat după această instrucțiune.

    Alinierea pe coajă

    Cea mai bună modalitate de a cunoaște secvența de încărcare a scripturilor în shell este de a crea un script simplu de pornire. De exemplu, utilitarul SSH rulează o coadă de conectare la distanță cu numele farfaraway când comanda ssh este rulată farfaraway ls. Sau poate este lansată o coajă interactivă simplă? Să aflăm.

    Listările 1. 2. 3 și 4 prezintă exemple ale fișierelor / etc / profile,

    Listarea 1 oferă un exemplu al scriptului / etc / profile. Acesta este primul fișier pe care shell-ul rulează (dacă există și este disponibil pentru citire de către utilizator).

    Listing 1. Exemplu de fișier / etc / profile

    Scriptul din listare 1 imprimă mesajul și stabilește valoarea minimă pentru variabila PATH. După cum am menționat mai devreme, acest script este rulat dacă shell-ul este o coajă de conectare interactivă. De exemplu, dacă porniți un nou terminal X, veți vedea acest mesaj:

    Bine! Am văzut secvența prognozată a scripturilor de încărcare când am lansat un shell nou pentru a vă conecta la terminalul X. Rețineți că este scris în promptul de comandă: afișează numele de utilizator, numele scurt al computerului și numărul de comandă.

    Dacă tastați oprire sau ieșire. se va afișa următorul mesaj:

    După cum sa spus înainte, shell-ul de conectare interactiv pornește

    Lista 2 arată un fișier exemplu

    /.bash_profile. Acest fișier este una dintre modalitățile posibile de a configura shell-ul la momentul încărcării.

    Listarea 2. Fișier exemplu

    Acum, să vedem ce se întâmplă atunci când porniți o instanță de shell nouă din linia de comandă. Noul shell este interactiv, dar nu este shell shell de conectare. Prin urmare,

    /.bashrc este singurul fișier care ar trebui să fie pornit.

    Și, într-adevăr, doar fișierul a fost lansat

    /.bashrc. Dovezile pot fi găsite pe linia de comandă, ultima linie este promptul Bash obișnuit și nu cel specificat în

    Pentru a testa scriptul de ieșire din shell, tastați ieșirea (este imposibil să ieși cu comanda de deconectare, deoarece aceasta nu este coajă de conectare). Va fi imprimat:

    Când shell-ul interactiv își termină activitatea, execută scriptul

    /.bash_logout. Puteți utiliza această caracteristică pentru a elimina fișierele temporare, fișierele importante de rezervă ca o metodă simplă de rezervă, sau chiar pentru a rula rsync utilitar pentru a copia la alte calculatoare toate modificările făcute în ultima sesiune.

    Lista 3 prezintă un exemplu de script

    /.bashrc. Acest script este un fișier de inițializare pentru versiunea non-interactivă a shell-ului Bash.

    Listarea 3. Exemplu

    Acum un alt experiment: ce mod va avea shell-ul de comandă când se conectează prin SSH? Să ne uităm la două opțiuni. (Puteți utiliza doar SSH pentru a se conecta la mașina locală, funcționează în același mod ca și în cazul în care pentru a rula SSH de pe un computer la distanță.) În primul rând, vom folosi SSH pentru a vă conecta la un computer la distanță:

    După cum era de așteptat, pornirea SSH pentru a accesa un computer la distanță inițiază lansarea unei noi corespondențe de conectare. Acum, ce se întâmplă dacă voi executa o comandă prin SSH? Iată răspunsul:

    Rularea comenzii de la distanță prin SSH inițiază lansarea unei cochilii interactive care nu este o coajă de conectare. De ce interactiv? Deoarece intrarea standard și ieșirea standard de pe un computer la distanță sunt conectate la tastatură și la afișajul dvs., deși prin SSH.

    Lista 4 arată un fișier exemplu

    /.bash_logout. Acest script este rulat atunci când shell-ul comenzii iese.

    Lista 4: fișier exemplu

    Sfaturi pentru crearea fișierelor de pornire

    Cu cât este folosit mai des shell-ul de comandă, cu atât mai mult timp și efort este salvat de utilizator prin scrierea setărilor în fișierele de pornire. În continuare, veți găsi câteva modalități utile și sfaturi pentru configurarea coșului de comandă Bash. (Puteți utiliza o strategie similară pentru alte cochilii de comandă.)

    • Dacă trebuie să utilizați anumite setări (de exemplu PATH) în fiecare instanță shell (indiferent de modul), efectuați aceste setări în

    /.bashrc și sursa de utilizare. pentru a rula scripturi de la

    /.bash_profile.
  • Dacă există conturi pe mai multe calculatoare (și directorul home sunt copiate prin intermediul Network File System [NFS]), apoi utilizați rsync, pentru a păstra fișierele de shell folosit de rețea pentru toate computerele.
  • „Dacă setarea shell ar trebui să depindă de calculator, de exemplu, o valoare specială cale pentru un sistem care are aplicații specializate - a salva aceste setări într-un fișier separat și de a folosi comanda sursă pentru a încărca acest fișier dacă gestionarea fișierelor se face cu ajutorul rsync exclude calculatorul destinație specială .. din lista de copiere.

    Desigur, puteți crea un script global și utilizați verificarea variabilei globale HOSTNAME pentru a selecta setările corespunzătoare. (HOSTNAME este instalat automat de shell și include numele complet al computerului). De exemplu, aici este o modalitate de a seta setările bazate pe numele computerului:

    Acest exemplu utilizează o declarație comutator pentru a selecta $ HOSTNAME variabilă a patru valori posibile: lab.area51.org, alien.area51.org, șablon, care se potrivește cu orice nume care începe farfurioara string * (numele computerului: de exemplu, farfurioara-Marte pentru a satisface acest șablon, iar numele sauce.tomato.org nu este) și toate celelalte nume. Aici, în cazul Bash coajă, asteriscul (*) este interpretat ca un operator de coajă, nu operatorul expresia regulată. Atunci când alegerea se face în favoarea uneia dintre opțiunile listate, variabilele de mediu sunt inițializate în funcție de opțiunea selectată. Spre deosebire de instrucțiunile de comutare din alte limbi de programare, numai una dintre opțiunile listate în cazul respectiv va fi executată în Bash.

    În cele din urmă, să aruncăm o privire la fișierele autorun create de alți utilizatori pentru a obține inspirație și a-și păstra puterea. (Unii utilizatori nu dau acces la aceste fișiere și directoarele lor de acasă, dar cine nu le permite să verifice?). Poate că Joe are o linie de comandă rece și utilă? Aflați cum să faceți la fel. Poate Jeannet are taste rapide suplimentare sau există o bună colecție de variabile de mediu care ajută să profite de caracteristicile speciale ale unor utilități? Află de la ea rețetele ei. Cea mai bună sursă de idei și coduri vine de la practicienii de linie de comandă cu experiență.

    Configurarea Shell-ului

    Opțiunile pentru configurarea shell-ului de comandă sunt neobișnuit de largi și dacă le salvați într-un fișier autorun, le puteți reutiliza. Utilizați rsync sau un instrument similar pentru a transfera setările la alte mașini.

    Aceasta încheie lecția.







    Articole similare

    Trimiteți-le prietenilor: