Cili është ndryshimi midis .bashrc dhe .profile në Linux?
Makina Linux që funksionon Bash lexon skedarë të caktuar kur identifikohesh për të konfiguruar mjedisin tënd të guaskës. Por cilat skedarë lexohen dhe kur mund të jenë konfuze, gjë që e bën të vështirë të dihet nëse duhet modifikuar skedari .bashrc, skedari .bash_profile ose një skedar tjetër konfigurimi. Ja çfarë duhet të dini.
Llojet e ndryshme të guaskës
Mjedisi që merrni kur lëshoni një predhë përcaktohet nga cilësimet e mbajtura në skedarët e konfigurimit ose profilit. Këto përmbajnë informacione që përcaktojnë gjëra të tilla si ngjyrat e tekstit tuaj, linja e komandës, pseudonimet dhe shtegu që kërkohet për skedarë të ekzekutueshëm kur shkruani emrin e një programi.
Ka një numër skedarësh të ndryshëm—në vende të ndryshme në sistemin e skedarëve—ku ruhen këto cilësime. Por, përpara se të shqyrtojmë se cilët skedarë lexohen kur lëshoni një predhë, duhet të jemi të qartë se çfarë lloji të predhës po përdorni.
Një guaskë identifikimi është një guaskë në të cilën ju identifikoheni. Kur nisni kompjuterin tuaj dhe identifikoheni, nën mjedisin tuaj grafik të desktopit ka një guaskë identifikimi. Nëse lidheni me një kompjuter tjetër përmes një lidhjeje SSH, do të identifikoheni gjithashtu në një guaskë identifikimi.
Lloji i guaskës që merrni kur hapni një dritare terminali është një guaskë që nuk hyn. Ju nuk keni nevojë të vërtetoni për të nisur një guaskë kur jeni tashmë i identifikuar. Predhat e hyrjes dhe ato jo-identifikimi janë predha ndërvepruese. Ju i përdorni ato duke shtypur udhëzime, duke shtypur tastin Enter dhe duke lexuar përgjigjet në ekran.
Ekzistojnë gjithashtu predha jo-interaktive, gjithashtu. Këto janë lloji i predhave që lëshohen kur ekzekutohet një skenar. Skenari është lançuar në një guaskë të re. Shebang #!/bin/bash
në krye të skriptit dikton se cila guaskë duhet përdorur.
#!/bin/bash
echo -e "Hello, World!\n"
Ky skript do të ekzekutohet në një guaskë jo-interaktive Bash. Vini re se edhe pse guaska është jo-interaktive, vetë skripti mund të jetë. Ky skript printohet në dritaren e terminalit dhe po aq lehtë mund të pranojë hyrjen e përdoruesit.
Predha jo-interaktive
Predhat jo-interaktive nuk lexojnë asnjë skedar profili kur nisen. Ata trashëgojnë variablat e mjedisit, por nuk do të dinë asgjë rreth pseudonimeve, për shembull, nëse ato janë të përcaktuara në vijën e komandës ose në një skedar konfigurimi.
Ju mund të provoni nëse një guaskë është interaktive apo jo duke parë opsionet që iu kaluan si parametra të linjës së komandës. Nëse ka një i në opsionet, guaska është interaktive. Parametri special i Bash $-
përmban parametrat e linjës së komandës për predhën aktuale.
[[ $- == *i* ]] && echo 'Interactive' || echo 'Non-interactive'
Le të krijojmë një pseudonim të quajtur xc
që do të thotë mace. Do të kontrollojmë gjithashtu nëse kemi një grup variablash PATH
.
alias xc=cat
echo $PATH
Ne do të përpiqemi t'i qasemi të dyjave nga brenda këtij skenari të vogël. Kopjojeni këtë skript në një redaktues dhe ruajeni si int.sh.
#!/bin/bash
xc ~/text.dat
echo "Variable=$PATH"
Do të na duhet të përdorim chmod
për ta bërë skriptin të ekzekutueshëm.
chmod +x int.sh
Le të ekzekutojmë skenarin tonë:
./int.sh
Në guaskën e tij jo-interaktive, skripti ynë nuk mund të përdorë pseudonimin, por mund të përdorë variablin e mjedisit. Predhat interaktive janë më interesante në përdorimin e skedarëve të profileve dhe konfigurimit.
Predhat e hyrjes interaktive
Ekzistojnë dy lloje të predhave interaktive të hyrjes. Njëra është guaska që ju lejon të identifikoheni në kompjuterin tuaj. Në desktop, kjo është zakonisht guaska që qëndron në themel të mjedisit tuaj të desktopit. Pavarësisht nëse përdorni një mjedis desktopi me dritare ose me pllaka, diçka duhet t'ju vërtetojë me sistemin Linux dhe t'ju lejojë të identifikoheni.
Në serverët pa një mjedis desktop të instaluar, ju identifikoheni direkt në një guaskë interaktive. Ju mund të bëni të njëjtën gjë në një kompjuter desktop nëse dilni nga mjedisi i desktopit dhe hyni në një terminal. Në GNOME mund ta bëni këtë me kombinimin e tastit Ctrl+Alt+F3. Për t'u kthyer në sesionin tuaj GNOME, shtypni kombinimin e tastit Ctrl+Alt+F2. Predha me të cilën lidheni përmes një SSH është gjithashtu një guaskë identifikimi.
Profili dhe skedarët e konfigurimit që thirren mund të vendosen duke përdorur variablat e mjedisit, kështu që ato mund të ndryshojnë nga shpërndarja në shpërndarje. Për më tepër, jo të gjithë skedarët përdoren nga çdo shpërndarje. Në një instalim të përgjithshëm Bash, predha interaktive të hyrjes lexojnë skedarin /etc/profile. Kjo përmban opsionet e konfigurimit të shell të gjithë sistemit. Nëse ekzistojnë, ky skedar lexon gjithashtu skedarë të tillë si /etc/bash.bashrc dhe /usr/share/bash-completion/bash_completion.
Bash më pas kërkon një skedar ~/.bash_profile. Nëse nuk ekziston, Bash kërkon një skedar ~/.bash_login. Nëse ai skedar nuk ekziston, Bash përpiqet të gjejë një skedar .profile. Pasi të gjendet dhe lexohet një nga këta skedarë, Bash ndalon kërkimin. Pra, në shumicën e rasteve, ~/.profile nuk ka gjasa të lexohet fare.
Shpesh, do të gjeni diçka të tillë në ~/.bash_profile ose, si një lloj ndalimi, në skedarin tuaj ~/.profile:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Kjo kontrollon që guaska aktive është Bash. Nëse është, ai kërkon për një skedar ~/.bashrc dhe e lexon atë nëse gjendet.
Predha interaktive pa hyrje
Një guaskë ndërvepruese e Bash jo-login lexon /etc/bash.bashrc dhe më pas lexon skedarin ~/.bashrc. Kjo i lejon Bash-it të ketë cilësime për të gjithë sistemin dhe për përdoruesit.
Kjo sjellje mund të ndryshohet me flamuj përpilimi kur përpilohet Bash, por do të ishte një rrethanë e rrallë dhe e pazakontë të hasje një version të Bash që nuk e ka burimin dhe nuk lexon skedarin /etc/bash.bashrc.
Sa herë që hapni një dritare terminali në desktopin tuaj, këta dy skedarë përdoren për të konfiguruar mjedisin e asaj guaskë interaktive, pa hyrje. E njëjta gjë ndodh për predhat e lëshuara nga aplikacionet, të tilla si dritarja e terminalit në Geany IDE.
Ku duhet të vendosni kodin tuaj të konfigurimit?
Vendi më i mirë për të vendosur kodin tuaj personal të personalizimit është në skedarin tuaj ~/.bashrc. Pseudonimet tuaja dhe funksionet e guaskës mund të përcaktohen në ~/.bashrc, dhe ato do të lexohen dhe do të jenë të disponueshme për ju në të gjitha predha interaktive.
Nëse shpërndarja juaj nuk e lexon ~/.bashrc tuaj në predhat e hyrjes dhe ju dëshironi, shtoni këtë kod në skedarin tuaj ~/.bash_profile.
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Modulariteti është më i miri
Nëse keni shumë pseudonime ose dëshironi të përdorni të njëjtat pseudonime në një numër makinerish, është më mirë t'i ruani ato në skedarin e tyre, dhe të njëjtën gjë me funksionet tuaja të guaskës. Ju mund t'i telefononi ato skedarë nga skedari juaj ~/.bashrc.
Në kompjuterin tonë testues, pseudonimet ruhen në një skedar të quajtur .bash_aliases dhe një skedar i quajtur .bash_functions mban funksionet e guaskës.
Ju mund t'i lexoni ato nga brenda skedarit tuaj ~/.bashrc si kjo:
# read in my aliases
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# read in my shell functions
if [ -f ~/.bash_functions ]; then
. ~/.bash_functions
fi
Kjo ju lejon të lëvizni me lehtësi pseudonimet dhe funksionet tuaja ndërmjet kompjuterëve. Thjesht duhet të shtoni linjat e mësipërme në skedarin ~/.bashrc në secilin kompjuter dhe të kopjoni skedarët që përmbajnë pseudonimet tuaja dhe funksionet e guaskës në direktorinë tuaj kryesore në çdo kompjuter.
Kjo do të thotë që nuk keni nevojë të kopjoni të gjitha përkufizimet nga ~/.bashrc në një kompjuter në skedarët ~/.bashrc në secilin nga kompjuterët e tjerë. Është gjithashtu më mirë sesa të kopjoni të gjithë skedarin tuaj ~/.bashrc midis kompjuterëve, veçanërisht nëse ata po ekzekutojnë Bash në shpërndarje të ndryshme.
Në përmbledhje
Skedarët për të cilët vërtet duhet të dini janë:
- /etc/profile: Cilësimet e konfigurimit në të gjithë sistemin. Përdoret nga predhat e hyrjes.
- ~/.bash_profile: Përdoret për të mbajtur cilësimet për përdorues individualë. Përdoret nga predhat e hyrjes.
- ~/.bashrc: Përdoret për të mbajtur cilësimet për përdorues individualë. Përdoret nga predha interaktive pa hyrje. Mund të thirret gjithashtu nga skedari juaj ~/.bash_profile ose ~/.profile për identifikimin.
Një metodë e përshtatshme është të vendosni cilësimet tuaja personale në ~/.bashrc dhe sigurohuni që skedari juaj ~./bash_profile të thërrasë skedarin tuaj ~/.bashrc. Kjo do të thotë që cilësimet tuaja personale mbahen në një skedar të vetëm. Ju do të merrni një mjedis të qëndrueshëm të guaskës midis predhave identifikimi dhe jo-identifikimi. Kombinimi i kësaj me ruajtjen e pseudonimeve dhe funksioneve të guaskës në skedarë jo të sistemit është një zgjidhje e pastër dhe e fuqishme.