Shell Initialiséierungsdateien a Benotzerprofile am Linux verstoen


Linux ass e Multi-User, Time Sharing System, wat implizéiert datt méi wéi ee Benotzer sech aloggen an e System benotze kann. A Systemadministrateuren hunn d'Aufgab fir verschidden Aspekter ze managen wéi verschidde Benotzer e System kënne bedreiwen a punkto Installatioun/Update/Ewechhuele vu Software, Programmer déi se kënne lafen, Dateien déi se kënne kucken/änneren an sou weider.

Linux erlaabt och d'Ëmfeld vun de Benotzer op zwou grouss Weeër erstallt oder ënnerhalen ze ginn: System-breet (global) a Benotzerspezifesch (perséinlech) Konfiguratiounen. Normalerweis ass d'Basismethod fir mat engem Linux System ze schaffen d'Shell, an d'Shell erstellt en Ëmfeld ofhängeg vu bestëmmte Dateien déi se während senger Initialiséierung no engem erfollegräiche Benotzerlogin liest.

An dësem Artikel erkläre mir Shell-Initialiséierungsdateien a Relatioun mat Benotzerprofile fir lokal Benotzerverwaltung am Linux. Mir loossen Iech wësse wou Dir personaliséiert Shellfunktiounen, Aliasen, Variablen souwéi Startupprogrammer behalen.

Wichteg: Fir den Zweck vun dësem Artikel konzentréiere mir eis op Bash, eng sh kompatibel Shell déi déi populärste/benotzte Shell op Linux Systemer dobaussen ass.

Wann Dir en anere Shell (zsh, Äschen, Fësch etc..) Programm benotzt, liest duerch seng Dokumentatioun fir méi iwwer e puer vun de verbonne Dateien erauszefannen, iwwer déi mir hei schwätzen.

Shell Initialiséierung op Linux

Wann d'Shell opgeruff gëtt, ginn et gewësse Initialiséierungs-/Startupdateien déi se liest, déi hëllefe fir en Ëmfeld fir d'Shell selwer an de System Benotzer opzestellen; dat ass virdefinéiert (a personaliséiert) Funktiounen, Variabelen, Aliasen a sou weider.

Et ginn zwou Kategorien vun Initialiséierungsdateien gelies vun der Shell:

  • Systemwäit Startupdateien - Theses enthalen global Konfiguratiounen déi fir all Benotzer um System gëllen, a sinn normalerweis am /etc Verzeichnis. Si enthalen: /etc/profiles an /etc/bashrc oder /etc/bash.bashrc.
  • Benotzerspezifesch Startupdateien - dës Storekonfiguratiounen, déi fir en eenzege Benotzer um System gëllen an normalerweis am Benotzer Heemverzeichnis als Punktdateien sinn. Si kënnen d'System-breet Konfiguratiounen iwwerschreiden. Si enthalen: .profiles, .bash_profile, .bashrc an .bash_login.

Erëm kann d'Schuel an dräi méigleche Modi opgeruff ginn:

D'Schuel gëtt opgeruff nodeems e Benotzer erfollegräich an de System ageloggt ass, mat /bin/login, nodeems d'Umeldungsinformatioune gelies goufen, déi an der /etc/passwd Datei gespäichert sinn.

Wann d'Shell als interaktive Login-Shell gestart gëtt, liest se den /etc/profile a seng Benotzerspezifesch Äquivalent ~/.bash_profile.

D'Shell gëtt op der Kommandozeil gestart mat engem Shellprogramm zum Beispill $/bin/bash oder $/bin/zsh. Et kann och gestart ginn andeems Dir de Kommando /bin/su leeft.

Zousätzlech kann eng interaktiv Net-Login Shell och mat engem Terminalprogramm wéi konsole, xterm aus engem grafeschen Ëmfeld opgeruff ginn.

Wann d'Shell an dësem Zoustand gestart gëtt, kopéiert se d'Ëmfeld vun der Elterendeel, a liest d'Benotzerspezifesch ~/.bashrc Datei fir zousätzlech Startkonfiguratiounsinstruktiounen.

$ su
# ls -la

D'Shell gëtt opgeruff wann e Shell-Skript leeft. An dësem Modus veraarbecht et e Skript (Set vu Shell oder generesche Systembefehl/Funktiounen) an erfuerdert keng Benotzerinput tëscht Kommandoen, ausser wann et net anescht ass. Et funktionnéiert mat der Ëmwelt, déi vun der Eltereschuel ierflecher ass.

Verstoen System-breet Shell Startup Dateien

An dëser Sektioun wäerte mir méi Liicht op Shell-Startupdateien schaarf déi Konfiguratioune fir all Benotzer um System späicheren an dës enthalen:

D' /etc/profile Datei - et späichert systemwäit Ëmfeldkonfiguratiounen a Startupprogrammer fir Login-Setup. All Konfiguratiounen, déi Dir op all Ëmfeld vun de Systembenotzer gëlle wëllt, sollten an dëser Datei bäigefüügt ginn.

Zum Beispill kënnt Dir Är déi global PATH Ëmfeldvariabel hei setzen.

# cat /etc/profile

Bemierkung: A bestëmmte Systemer wéi RHEL/CentOS 7, kritt Dir esou Warnungen wéi \Et ass net recommandéiert dës Datei z'änneren ausser Dir wësst wat Dir maacht. Et ass vill besser fir e personaliséierten .sh Shell-Skript an /etc/ ze kreéieren. profile.d/ fir personaliséiert Ännerungen an Ärem Ëmfeld ze maachen, well dëst d'Noutwendegkeet fir Fusioun an zukünfteg Updates ze verhënneren.

Den /etc/profile.d/ Verzeichnis - späichert Shell Scripte benotzt fir personaliséiert Ännerungen an Ärem Ëmfeld ze maachen:

# cd /etc/profile.d/
# ls  -l 

D'Datei /etc/bashrc oder /etc/bash.bashrc - enthält systembreet Funktiounen an Aliasen, dorënner aner Konfiguratiounen, déi fir all Systembenotzer gëllen.

Wann Äre System méi Aarte vu Shells huet, ass et eng gutt Iddi fir bash-spezifesch Konfiguratiounen an dëser Datei ze setzen.

# cat /etc/bashrc

Benotzerspezifesch Shell Startup Dateien verstoen

Als nächst wäerte mir méi betreffend Benotzerspezifesch Shell (bash) Startup Dot Dateien erklären, déi Konfiguratioune fir e bestëmmte Benotzer um System späicheren, se sinn an engem Heemverzeechnes vun engem Benotzer a si enthalen:

# ls -la

D'~/.bash_profile Datei - dëst späichert Benotzerspezifesch Ëmfeld a Startup Programmer Konfiguratiounen. Dir kënnt Är personaliséiert PATH Ëmfeldvariabel hei setzen, wéi am Screenshot hei ënnen gewisen:

# cat ~/.bash_profile

D'~/.bashrc Datei - dës Datei späichert Benotzerspezifesch Aliasen a Funktiounen.

# cat ~/.bashrc

D'~/.bash_login Datei - et enthält spezifesch Konfiguratiounen déi normalerweis nëmmen ausgefouert ginn wann Dir Iech op de System aloggen. Wann de ~/.bash_profile fehlt, gëtt dës Datei vum Bash gelies.

D'~/.profile Datei - dës Datei gëtt gelies an der Verontreiung vu ~/.bash_profile an ~/.bash_login; et kann déiselwecht Konfiguratiounen späicheren, déi och vun anere Shells um System zougänglech sinn. Well mir hei haaptsächlech iwwer Bash geschwat hunn, bemierkt datt aner Shells d'Bash Syntax net verstinn.

Als nächst wäerte mir och zwee aner wichteg Benotzerspezifesch Dateien erklären, déi net onbedéngt bash Initialiséierungsdateien sinn:

D'~/.bash_history-Datei - bash hält eng Geschicht vu Befehle, déi vun engem Benotzer am System agefouert goufen. Dës Lëscht vun de Befehle gëtt am Heemverzeechnes vun engem Benotzer an der ~/.bash_history Datei gehal.

Fir dës Lëscht ze gesinn, gitt:

$ history 
or 
$ history | less

D'~/.bash_logout Datei - et gëtt net fir Shell Startup benotzt, awer späichert Benotzerspezifesch Instruktioune fir d'Logoutprozedur. Et gëtt gelies an ausgefouert wann e Benotzer aus enger interaktiver Login-Shell erausgeet.

E praktescht Beispill wier andeems Dir d'Terminalfenster beim Logout läschen. Dëst ass wichteg fir Fernverbindungen, déi eng propper Fënster hannerloossen nodeems se se zougemaach hunn:

# cat bash_logout 

Fir zousätzlech Abléck, kuckt d'Inhalter vun dëse Shell-Initialiséierungsdateien op verschiddene Linux Distros a liest och duerch d'Bash Man Säit:

Dat ass alles fir elo! An dësem Artikel hu mir Shell Startup/Initialiséierungsdateien an Linux erkläert. Benotzt de Kommentarformular hei ënnen fir eis zréck ze schreiwen.