.Bashrc සහ .bash_profile අතර වෙනස


468

අතර වෙනස කුමක් ද .bashrcහා .bash_profileහා එක මම පාවිච්චි කළ යුත්තේ ඇයි?



ඊට සම්බන්ධ තවත් සම්පූර්ණ පැහැදිලි කිරීමක් ඔබට අවශ්‍ය නම් .profile, මෙම ප්‍රශ්නය දෙස බලන්න: superuser.com/questions/789448/…
Flimm

මෙම පිළිතුර මගින් කොටස් කිහිපයක් ආවරණය කරයි stackoverflow.com/questions/415403/…
සර්ජි වොරොනෙෂ්ස්කි

Answers:


541

සාම්ප්‍රදායිකව, ඔබ යුනික්ස් පද්ධතියකට පිවිසෙන විට, පද්ධතිය ඔබ වෙනුවෙන් එක් වැඩසටහනක් ආරම්භ කරයි. එම වැඩසටහන ෂෙල් එකක්, එනම් වෙනත් වැඩසටහන් ආරම්භ කිරීම සඳහා නිර්මාණය කරන ලද වැඩසටහනකි. එය විධාන රේඛා කවචයකි: ඔබ වෙනත් වැඩසටහනක් එහි නම ටයිප් කිරීමෙන් ආරම්භ කරයි. පෙරනිමි කවචය, බෝර්න් කවචය, ~/.profileඑය පිවිසුම් කවචය ලෙස ආයාචනා කළ විට සිට විධාන කියවයි .

බෑෂ් යනු බෝර්න් වැනි කවචයකි. එය ~/.bash_profileපිවිසුම් කවචය ලෙස ආයාචනා කළ විට සිට විධාන කියවන අතර, එම ගොනුව නොපවතී නම්, එය කියවීමට උත්සාහ කරයි ~/.profile.

ඔබට ඕනෑම වේලාවක කෙලින්ම කවචයක් කැඳවිය හැකිය, නිදසුනක් ලෙස GUI පරිසරයක් තුළ ටර්මිනල් ඉමුලේටරයක් ​​දියත් කිරීමෙන්. කවචය පිවිසුම් කවචයක් නොවේ නම්, එය කියවන්නේ නැත ~/.profile. ඔබ අන්තර්ක්‍රියාකාරී කවචයක් ලෙස බැෂ් ආරම්භ කරන විට (එනම්, ස්ක්‍රිප්ට් එකක් ධාවනය නොකිරීමට), එය කියවනු ලැබේ ~/.bashrc(පිවිසුම් කවචයක් ලෙස ආයාචනා කළ විට හැර, එය කියවන්නේ ~/.bash_profileහෝ ~/.profile.

එබැවින්:

  • ~/.profile ඔබ ලොග් වූ විට ආරම්භ කිරීමට අවශ්‍ය වැඩසටහන් (නමුත් චිත්‍රක වැඩසටහන් නොවේ, ඒවා වෙනත් ගොනුවකට යයි) සහ පරිසර විචල්‍ය අර්ථ දැක්වීම් වැනි ඔබේ මුළු සැසිවාරයටම අදාළ වන දේවල් තැබිය යුතු ස්ථානයයි.

  • ~/.bashrcඅන්වර්ථය සහ ක්‍රියාකාරී අර්ථ දැක්වීම්, ෂෙල් විකල්ප සහ කඩිනම් සැකසුම් වැනි බැෂ් වලට පමණක් අදාළ වන දේවල් තැබිය යුතු ස්ථානයයි. (ඔබට යතුරු බන්ධන ද එහි තැබිය හැකිය, නමුත් ඒවා සාමාන්‍යයෙන් ඇතුල් ~/.inputrcවේ.)

  • ~/.bash_profileඒ වෙනුවට භාවිතා කළ හැකිය ~/.profile, නමුත් එය කියවනු ලබන්නේ වෙනත් කවචයකින් නොව බාෂ් මගින් පමණි. (ඔබේ ආරම්භක ලිපිගොනු බහු යන්ත්‍රවල වැඩ කිරීමට අවශ්‍ය නම් මෙය බොහෝ දුරට සැලකිලිමත් වන අතර ඔබේ පිවිසුම් කවචය ඒ සියල්ලටම නොගැලපේ.) ~/.bashrcකවචය අන්තර්ක්‍රියාකාරී නම් ඇතුළත් කිරීමට මෙය තාර්කික ස්ථානයකි . පහත සඳහන් අන්තර්ගතයන් මම නිර්දේශ කරමි ~/.bash_profile:

    if [ -r ~/.profile ]; then . ~/.profile; fi
    case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac

නූතන යුනිසස් වල, ඊට සම්බන්ධ අමතර සංකූලතාවයක් තිබේ ~/.profile. ඔබ චිත්‍රක පරිසරයකට පිවිසෙන්නේ නම් (එනම්, ඔබ ඔබේ මුරපදය ටයිප් කරන වැඩසටහන ග්‍රැෆික් ප්‍රකාරයේදී ක්‍රියාත්මක වන්නේ නම්), ඔබට ස්වයංක්‍රීයව කියවන පිවිසුම් කවචයක් නොලැබේ ~/.profile. චිත්‍රක පිවිසුම් වැඩසටහන මත පදනම්ව, ඔබ පසුව ක්‍රියාත්මක වන කවුළු කළමණාකරු හෝ ඩෙස්ක්ටොප් පරිසරය සහ ඔබේ බෙදාහැරීම මෙම වැඩසටහන් වින්‍යාසගත කළ ආකාරය මත පදනම්ව, ඔබට ~/.profileකියවීමට හෝ නොකිරීමට ඉඩ ඇත. එය එසේ නොවේ නම්, සාමාන්‍යයෙන් ඔබ පිවිසෙන විට දියත් කිරීමට පරිසර විචල්‍යයන් සහ වැඩසටහන් නිර්වචනය කළ හැකි වෙනත් ස්ථානයක් ඇත, නමුත් අවාසනාවකට සම්මත ස්ථානයක් නොමැත.

පරිසර විචල්‍ය අර්ථ දැක්වීම් තැබීමට ~/.bashrcහෝ සෑම විටම පර්යන්තවල පිවිසුම් කවච දියත් කිරීමට ඔබට මෙහි සහ එහි නිර්දේශ දැකිය හැකි බව සලකන්න . දෙකම නරක අදහස්. මෙම අදහස් වලින් එකක ඇති වඩාත්ම පොදු ගැටළුව නම්, ඔබේ පරිසර විචල්‍යයන් සකසනු ලබන්නේ පර්යන්තය හරහා දියත් කරන ලද වැඩසටහන් වල මිස අයිකනයක් හෝ මෙනුවක් හෝ යතුරුපුවරු කෙටිමඟකින් කෙලින්ම ආරම්භ කරන ලද වැඩසටහන් වල නොවේ.

Request සම්පූර්ණත්වය සඳහා, ඉල්ලීම පරිදි: .bash_profileනොපවතී නම්, .bash_loginනැවත වැටීමට පෙර බාෂ් ද උත්සාහ කරයි .profile. එය පවතින බව අමතක කිරීමට නිදහස් වන්න.


11
හොඳ තනතුර සඳහා +1. "පිවිසුම් චිත්‍රක එදිරිව පිවිසුම් කවචය" පිළිබඳ කොටස එකතු කිරීම ගැන ඔබට ස්තූතියි ... මට සිතූ ගැටලුව වූයේ ~ / .ප්‍රොෆයිල් සෑම විටම චිත්‍රක / කවචය සඳහා ක්‍රියාත්මක කරයි ... නමුත් පරිශීලකයා ලොග් වූ විට එය ක්‍රියාත්මක නොවේ. චිත්රක පිවිසුම හරහා. එම අභිරහස විසඳීමට ස්තූතියි.
ට්‍රෙවර් බොයිඩ් ස්මිත්

4
Il ගිලස්: සෑම පර්යන්තයකම පිවිසුම් කවචයක් ධාවනය කිරීම නරක අදහසක් වන්නේ මන්ද යන්න පිළිබඳ උදාහරණ සමඟ ඔබට වඩාත් විස්තරාත්මකව පැහැදිලි කළ හැකිද? මෙය ඩෙස්ක්ටොප් ලිනක්ස් සමඟ පමණක් ගැටළුවක්ද? (OS X පර්යන්තය තුළ සෑම විටම පිවිසුම් කවචයක් ධාවනය වන බව මම රැස් කර ගතිමි. කිසිදු අතුරු ආබාධයක් මා දැක නැත (මම සාමාන්‍යයෙන් iTerm භාවිතා කළද) නමුත් එවිට මට පිටතින් සැලකිලිමත් වන බොහෝ පරිසර විචල්‍යයන් ගැන සිතිය නොහැක. මාරාන්තික). (සමහර විට HTTP_PROXY?)
iconoclast

2
Ra බ්‍රැන්ඩන් ඔබ සෑම පර්යන්තයකම පිවිසුම් කවචයක් ධාවනය කරන්නේ නම්, එය පරිසරය විසින් සපයනු ලබන පරිසර විචල්‍යයන් අභිබවා යනු ඇත. එදිනෙදා අවස්ථාවන්හිදී, ඔබට එයින් ගැලවිය හැකිය, නමුත් ඔබට ටර්මිනලයක විවිධ විචල්‍යයන් සැකසීමට අවශ්‍ය වූ විට එය ඉක්මනින් හෝ පසුව ඔබට දෂ්ට කරනු ඇත (කියන්න, වැඩසටහනක වෙනස් සංස්කරණයක් අත්හදා බැලීමට): ධාවනය කිරීම පිවිසුම් කවචය ඔබගේ දේශීය සැකසුම් අභිබවා යයි.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

4
ප්‍රකාශය ~/.bash_profileවෙනුවට භාවිතා කළ හැකිය ~/.profile, නමුත් ~/.bashrcකවචය අන්තර්ක්‍රියාකාරී නම් ඔබද ඇතුළත් කළ යුතුය . මේවා විකලාංග ගැටලු බැවින් නොමඟ යවන සුළුය. පිවිසුම් කවචයේ බලපෑමක් ඇති කිරීමට ඔබට එතැන් සිට සැකසුම් අවශ්‍ය නම් ඔබ භාවිතා කරන්නේ නම් ~/.bash_profileහෝ ඔබ භාවිතා ~/.profileකරන දෙයට ඇතුළත් ~/.bashrcකළ යුතු නැත.
Piotr Dobrogost

3
Il ගිලස් ෂුවර්, නමුත් පිළිතුරෙහි වාක්‍යය සකසා ඇති ආකාරය අනුව ඇතුළත් කිරීමේ අවශ්‍යතාව සත්‍ය නොවන වෙනුවට ~/.bashrcතෝරා ගැනීම සමඟ යම් සම්බන්ධයක් ඇති බව අඟවයි . පිවිසුම් වේලාවේදී යමෙකු යම් ආකාරයක ස්ක්‍රිප්ටයක් ඇතුළත් කර ඇත්නම් (මෙන්න එය එසේත් නැතිනම් ) , පිවිසුම් කවචයට සැකසුම් ඒවා පිවිසුම් නොවන කවචයට යොදන ආකාරයටම යෙදීමට අවශ්‍ය නිසාය. ~/.bash_profile~/.profile~/.bashrc~/.bash_profile~/.profile~/.bashrc
Piotr Dobrogost

56

මෙම කෙටි ලිපියෙන්

Bash man පිටුවට අනුව, .bash_profile පිවිසුම් කවච සඳහා ක්‍රියාත්මක වන අතර .bashrc ක්‍රියාත්මක වන්නේ අන්තර්ක්‍රියාකාරී නොවන පිවිසුම් කවච සඳහා ය.

පිවිසුම් හෝ පිවිසුම් නොවන කවචයක් යනු කුමක්ද?

ඔබ කොන්සෝලය හරහා පිවිසෙන විට (උදා: පරිශීලක නාමය සහ මුරපදය ටයිප් කරන්න), ආරම්භයේදී යන්ත්‍රයේ භෞතිකව වාඩි වී සිටීම හෝ දුරස්ථව ssh: .bash_profile ක්‍රියාත්මක වන්නේ ආරම්භක විධාන විමසුමට පෙර දේවල් වින්‍යාස කිරීම සඳහා ය.

නමුත්, ඔබ දැනටමත් ඔබේ යන්ත්‍රයට ඇතුළු වී ග්නෝම් හෝ කේඩීඊ තුළ නව පර්යන්ත කවුළුවක් (xterm) විවෘත කර ඇත්නම්, කවුළු විධාන විමසුමට පෙර .bashrc ක්‍රියාත්මක වේ. .bashrc ද ක්‍රියාත්මක වන්නේ ඔබ ටර්මිනලයක / බින් / බෑෂ් ටයිප් කිරීමෙන් නව බාෂ් උදාහරණයක් ආරම්භ කරන විට ය.


13
සුළු යාවත්කාලීන කිරීම්: 'ක්‍රියාත්මක කිරීම' යනු තරමක් නොමඟ යවන යෙදුමකි, ඒවා දෙකම උපුටා ගෙන ඇත. ක්‍රියාත්මක කරන ශබ්දය එය ස්ක්‍රිප්ට් එකක් ලෙස ක්‍රියාත්මක වන බවක් පෙනේ, දෙබලක / ක්‍රියාත්මක කරන්න yadda yadda. එය වත්මන් කවචයේ සන්දර්භය තුළ ක්‍රියාත්මක වේ වඩා වැදගත් වන්නේ .bashrc බොහෝ විට ධාවනය වේ. එය සෑම බාෂ් ස්ක්‍රිප්ට් ධාවනයක් තුළම ක්‍රියාත්මක වන අතර ඔබට .bash_profile නොමැති නම්. එසේම, ඔබ ඔබේ xterms සකසන ආකාරය අනුව, ඔබට ප්‍රභවයක් ඇති කවචයක් සෑදිය හැකිය .bash_profile
Rich Homolka

37

පැරණි දිනවල, ව්‍යාජ ටීටීස් ව්‍යාජ නොවූ අතර ඇත්ත වශයෙන්ම, ටයිප් කළ, සහ යුනික්ස් මොඩම මගින් ප්‍රවේශ වූ විට මන්දගාමී වන අතර සෑම අකුරක්ම ඔබේ තිරයට මුද්‍රණය වන ආකාරය ඔබට දැකගත හැකි විය, කාර්යක්ෂමතාව ඉතා වැදගත් විය. කාර්යක්ෂමතාවයට තරමක් දුරට උපකාර කිරීම සඳහා ඔබට ප්‍රධාන පිවිසුම් කවුළුවක් පිළිබඳ සංකල්පයක් සහ ඔබ වැඩ කිරීමට භාවිතා කළ වෙනත් කවුළු තිබේ. ඔබගේ ප්‍රධාන කවුළුව තුළ, ඔබ ඕනෑම නව තැපෑලකට දැනුම් දීම් වලට කැමති, පසුබිමේ වෙනත් වැඩසටහන් ක්‍රියාත්මක කළ හැකිය.

මෙයට සහය දැක්වීම සඳහා, ෂෙල් වෙඩි ගොනුවක් .profileවිශේෂයෙන් 'පිවිසුම් කවච' මත පදනම් විය. සැසියක් සැකසූ පසු මෙය විශේෂ දෙයක් කරයි. .බෑෂ්_ප්‍රොෆයිල් බැලීමට පෙර බාෂ් මෙය තරමක් දිගු කළේය .ප්‍රොෆයිල්, මේ ආකාරයෙන් ඔබට එහි දේවල් පමණක් දැමිය හැකිය (එබැවින් ඒවා බෝර්න් ෂෙල් යනාදිය ඉස්කුරුප්පු නොකරයි. ප්‍රොෆයිල් දෙස බැලීය). වෙනත් ෂෙල් වෙඩි, පුරනය නොවීම, rc ගොනුව, .bashrc (හෝ .kshrc, ආදිය) ප්‍රභව කරයි.

මෙය දැන් ටිකක් අනුකම්පාවකි. ඔබ ගුයි කවුළු කළමණාකරුවකුට ලොග් වන තරමට ඔබ ප්‍රධාන කවචයකට පිවිසෙන්නේ නැත. වෙනත් කවුළුවකට වඩා වෙනස් ප්‍රධාන කවුළුවක් නොමැත.

මගේ යෝජනාව - මෙම වෙනස ගැන කරදර නොවන්න, එය පදනම් වී ඇත්තේ යුනික්ස් භාවිතා කිරීමේ පැරණි විලාසිතාවක් මත ය. ඔබගේ ලිපිගොනු වල වෙනස ඉවත් කරන්න. .Bash_profile හි සම්පූර්ණ අන්තර්ගතය විය යුත්තේ:

[ -f $HOME/.bashrc ] && . $HOME/.bashrc

ඔබට සැබවින්ම සැකසීමට අවශ්‍ය සියල්ල .bashrc තුළට දමන්න

.Bashrc සියලු ෂෙල් වෙඩි, අන්තර්ක්‍රියාකාරී හා අන්තර්ක්‍රියාකාරී නොවන බව මතක තබා ගන්න. මෙම කේතය .bashrc හි ඉහළින් තැබීමෙන් ඔබට අන්තර්ක්‍රියාකාරී නොවන කවච සඳහා මූලාශ්‍රය කෙටි පරිපථයක් කළ හැකිය.

[[ $- != *i* ]] && return


6
මෙය නරක අදහසකි, මගේ පිළිතුර බලන්න . විශේෂයෙන්, ඔබේ පරිසර විචල්‍යයන් සකසනු ලබන්නේ ටර්මිනලය හරහා දියත් කරන ලද වැඩසටහන් වල පමණි, අයිකන හෝ මෙනුව හෝ යතුරුපුවරු කෙටිමං සමඟ කෙලින්ම ආරම්භ කරන ලද වැඩසටහන් වල නොවේ.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

4
Il ගිලස් ඔබ මෙය කියා සිටින්නේ මන්දැයි මට තේරෙන්නේ නැත. සමග .$HOME/.bashrcපොහොසත් ඉහත පෙන්නුම් ලෙස, සැකසුම් .bashrcපිවිසුම් ෂෙල් වෙඩි, හා ඒ නිසා ඩෙස්ක්ටොප් පරිසරය මෙන්ම ලබාගත හැකි වනු ඇත. උදාහරණයක් ලෙස, මගේ ෆෙඩෝරා පද්ධතියේ, gnome-sessionආරම්භ කර ඇති -$SHELL -c gnome-sessionපරිදි .profileකියවනු ලැබේ.
මයිකල්

2
@PiotrDobrogost ඔහ්, ඔව්, පොහොසත් පිළිතුරේ තවත් ගැටලුවක් තිබේ. ඇතුළු .bashrcදී .profileඅවහිරයක් නොවේ වැඩ නිසා කරන්නේ .profileවිසින් ක්රියාත්මක කළ හැකි /bin/sh(පෙර සැකසුම මඟින් චිත්රක පිවිසුමක් සඳහා උබුන්ටු මත උදා) bash නොව, සහ ෂෙල් (උදා: චිත්රක පිවිසුමක් සඳහා) අන්තර් ගත නොහැකි විය හැක.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

3
Il ගිලස් නැවත: ".bashrc in .profile ඇතුළුව" කිසිසේත් නිර්දේශ කර නැත (ඇත්ත වශයෙන්ම ඊට පටහැනිව). එක්කෝ පිළිතුර සංස්කරණය කරන ලදි (එය එසේ නොපෙනේ), නැතහොත් ඔබේ අදහස් පවසන දෙයට නොගැලපේ.
මයිකල්

2
පොදුවේ ගත් කල, +1, නමුත් මම නිර්දේශයට “කෙටි පරිපථය ... අන්තර්ක්‍රියාකාරී නොවන ෂෙල් සඳහා” (“.bashrc: [[ $- != *i* ]] && return” මුදුන අසල ); මගේ සමහරක් .bashrcඅන්තර්ක්‍රියාකාරී නොවන ෂෙල් වෙඩි සඳහා පවා ක්‍රියාත්මක කිරීමට මම කැමතියි , විශේෂයෙන් env vars, නිකුත් කිරීමේදී ssh hostname {command}, දුරස්ථ විධාන නිවැරදිව ක්‍රියාත්මක වන පරිදි (කවචය අන්තර්ක්‍රියාකාරී නොවූවත්). නමුත් පසුකාලීනව වෙනත් සැකසුම් .bashrcනොසලකා හැරිය යුතුය. මම සාමාන්‍යයෙන් TERM = ගොළු සහ / හෝ නොවිසඳී ඇත්දැයි පරීක්ෂා කර, කලින් ඇප ලබා දෙන්නෙමි.
මයිකල්

19

ශ්‍රීවාට්සාර්ගේ මෙම විශිෂ්ට බ්ලොග් සටහන දෙස බලන්න . මෙන්න උපුටා ගැනීමකි, නමුත් බ්ලොග් සටහන වෙත යන්න, එයට "පිවිසුම් කවචය", ප්‍රවාහ සටහනක් සහ Zsh සඳහා සමාන වගුවක් වැනි වචන සඳහා පැහැදිලි කිරීමක් ඇතුළත් වේ.

Bash සඳහා, ඔවුන් පහත පරිදි ක්රියා කරයි. සුදුසු තීරුව කියවන්න. A, පසුව B, පසුව C යනාදිය ක්‍රියාත්මක කරයි. B1, B2, B3 යන්නෙන් අදහස් කරන්නේ එය ක්‍රියාත්මක වන්නේ එම ලිපිගොනු වලින් පළමුවැන්න පමණි.

+----------------+-----------+-----------+------+
|                |Interactive|Interactive|Script|
|                |login      |non-login  |      |
+----------------+-----------+-----------+------+
|/etc/profile    |   A       |           |      |
+----------------+-----------+-----------+------+
|/etc/bash.bashrc|           |    A      |      |
+----------------+-----------+-----------+------+
|~/.bashrc       |           |    B      |      |
+----------------+-----------+-----------+------+
|~/.bash_profile |   B1      |           |      |
+----------------+-----------+-----------+------+
|~/.bash_login   |   B2      |           |      |
+----------------+-----------+-----------+------+
|~/.profile      |   B3      |           |      |
+----------------+-----------+-----------+------+
|BASH_ENV        |           |           |  A   |
+----------------+-----------+-----------+------+
|                |           |           |      |
+----------------+-----------+-----------+------+
|                |           |           |      |
+----------------+-----------+-----------+------+
|~/.bash_logout  |    C      |           |      |
+----------------+-----------+-----------+------+

එකම පිළිතුර බහුවිධ ප්‍රශ්නවල පළ කරනවා වෙනුවට, ඔබේ පිළිතුර අසන්නාගේ නිශ්චිත අවශ්‍යතාවන්ට සරිලන සේ සකස් කර ගත හැකි නම් වඩාත් සුදුසුය. ප්‍රශ්න දෙකටම පිළිතුර හරියටම සමාන නම්, ඔබ එක පිළිතුරක් පළ කර අනෙක් ප්‍රශ්න මුල් පිටපත ලෙස වසා දැමීමට ඡන්දය දිය යුතුය.
මොකුබායි

1
Ok මොකුබායි අනෙක් ප්‍රශ්නය දැනටමත් මෙම ප්‍රශ්නයේ අනුපිටපතක් ලෙස සලකුණු කර ඇත.
Flimm

Li එලිප්ටිකල් වීව්: කිසිවක් නොකර සිටීමෙන්, ඔබ යොමු කරන්නේ රේඛාවට : [ -z "$PS1" ] && return? මගේ පිළිතුරේ ඇති වගුව වන්නේ ස්ක්‍රිප්ටයේ අන්තර්ගතය නොසලකා බාෂ් විසින් මෙහෙයවනු ලබන ස්ක්‍රිප්ට් ලැයිස්තුවක් ලබා දීමයි, ස්ක්‍රිප්ටයේ රේඛාව තිබේ [ -z "$PS1" ] && returnනම් එය ඇත්ත වශයෙන්ම ක්‍රියාත්මක වනු ඇත, නමුත් එයින් අදහස් කරන්නේ මා වෙනස් කළ යුතු බවයි වගුව.
Flimm

5

/ ETC / PROFILE හි හිස සඳහා වඩා හොඳ අදහස්

ඉහත සඳහන් කළ ෆ්ලිම්ගේ විශිෂ්ට පිළිතුර මත පදනම්ව, මම මෙම නව අදහස මගේ ඩේබියන් / etc / පැතිකඩෙහි ප්‍රධාන කොටසේ ඇතුළත් කළෙමි , (ඔබේ ඩිස්ට්‍රෝ සඳහා එය සකස් කිරීමට ඔබට අවශ්‍ය විය හැකිය.) :

# For BASH: Read down the appropriate column. Executes A, then B, then C, etc.
# The B1, B2, B3 means it executes only the first of those files found.  (A)
# or (B2) means it is normally sourced by (read by and included in) the
# primary file, in this case A or B2.
#
# +---------------------------------+-------+-----+------------+
# |                                 | Interactive | non-Inter. |
# +---------------------------------+-------+-----+------------+
# |                                 | login |    non-login     |
# +---------------------------------+-------+-----+------------+
# |                                 |       |     |            |
# |   ALL USERS:                    |       |     |            |
# +---------------------------------+-------+-----+------------+
# |BASH_ENV                         |       |     |     A      | not interactive or login
# |                                 |       |     |            |
# +---------------------------------+-------+-----+------------+
# |/etc/profile                     |   A   |     |            | set PATH & PS1, & call following:
# +---------------------------------+-------+-----+------------+
# |/etc/bash.bashrc                 |  (A)  |  A  |            | Better PS1 + command-not-found 
# +---------------------------------+-------+-----+------------+
# |/etc/profile.d/bash_completion.sh|  (A)  |     |            |
# +---------------------------------+-------+-----+------------+
# |/etc/profile.d/vte-2.91.sh       |  (A)  |     |            | Virt. Terminal Emulator
# |/etc/profile.d/vte.sh            |  (A)  |     |            |
# +---------------------------------+-------+-----+------------+
# |                                 |       |     |            |
# |   A SPECIFIC USER:              |       |     |            |
# +---------------------------------+-------+-----+------------+
# |~/.bash_profile    (bash only)   |   B1  |     |            | (doesn't currently exist) 
# +---------------------------------+-------+-----+------------+
# |~/.bash_login      (bash only)   |   B2  |     |            | (didn't exist) **
# +---------------------------------+-------+-----+------------+
# |~/.profile         (all shells)  |   B3  |     |            | (doesn't currently exist)
# +---------------------------------+-------+-----+------------+
# |~/.bashrc          (bash only)   |  (B2) |  B  |            | colorizes bash: su=red, other_users=green
# +---------------------------------+-------+-----+------------+
# |                                 |       |     |            |
# +---------------------------------+-------+-----+------------+
# |~/.bash_logout                   |    C  |     |            |
# +---------------------------------+-------+-----+------------+
#
# ** (sources !/.bashrc to colorize login, for when booting into non-gui)

මෙම සටහන වෙනත් එක් එක් සැකසුම් ලිපිගොනු වල ප්‍රධාන කොටසේ එය යොමු කිරීම සඳහා:

# TIP: SEE TABLE in /etc/profile of BASH SETUP FILES AND THEIR LOAD SEQUENCE

සඳහන් කිරීම වටී, පෙරනිමි ප්‍රභවයන් අනුව ඩේබියන්ගේ / etc / පැතිකඩ (ඇතුළත් වේ) /etc/bash.bashrc (/etc/bash.bashrc පවතින විට). එබැවින් පිවිසුම් ස්ක්‍රිප්ට් / etc ගොනු දෙකම කියවන අතර පුරනය නොවන අය කියවන්නේ bash.bashrc පමණි.

/Etc/bash.bashrc අන්තර්ක්‍රියාකාරීව ක්‍රියාත්මක නොවන විට කිසිවක් කිරීමට සූදානම් බව සැලකිල්ලට ගත යුතුය. එබැවින් මෙම ලිපිගොනු දෙක අන්තර්ක්‍රියාකාරී ස්ක්‍රිප්ට් සඳහා පමණි.


4

බාෂ්ගේ වින්‍යාස කිරීමේ තර්කනය පිස්සු සංකීර්ණ නොවන අතර මෙම පිටුවේ, සර්වර්ෆෝල්ට් සහ බොහෝ බ්ලොග් වල වෙනත් පිළිතුරු වලින් පැහැදිලි කර ඇත. කෙසේ වෙතත් ගැටළුව වන්නේ ලිනක්ස් බෙදාහැරීම් මඟින් බාෂ් සෑදීමයි , මම අදහස් කළේ ඔවුන් පෙරනිමියෙන් බාෂ් වින්‍යාස කරන සංකීර්ණ හා විවිධ ක්‍රම. http://mywiki.wooledge.org/DotFiles මෙම විචක්ෂණ සමහරක් කෙටියෙන් සඳහන් කරයි. මෙන්න ෆෙඩෝරා 29 හි එක් නියැදි හෝඩුවාවක්, එය පෙන්වන්නේ කුමන ලිපිගොනු මූලාශ්‍රය වෙනත් ගොනු (ය) සහ ඉතා සරල තත්වයක් සඳහා අනුපිළිවෙල අනුව: දුරස්ථව ssh සමඟ සම්බන්ධ වී තවත් උපසිරැසියක් ආරම්භ කිරීම:

ssh fedora29
 └─ -bash # login shell
      ├── /etc/profile
      |    ├─ /etc/profile.d/*.sh
      |    ├─ /etc/profile.d/sh.local
      |    └─ /etc/bashrc
      ├── ~/.bash_profile
      |    └─ ~/.bashrc
      |          └─ /etc/bashrc
      |
      |
      └─ $ bash  # non-login shell
            └─ ~/.bashrc
                 └─ /etc/bashrc
                       └─ /etc/profile.d/*.sh

ෆෙඩෝරාගේ වඩාත් සංකීර්ණ තර්කනය ක්‍රියාත්මක වේ /etc/bashrc. ඉහත දැක්වෙන පරිදි /etc/bashrcගොනු බෑෂ් එකක් ගැනම නොදනී, මම අදහස් කළේ කෙලින්ම නොවේ. ෆෙඩෝරාගේ /etc/bashrcපරීක්ෂණ:

  • එය පිවිසුම් කවචයකින් ලබා ගනී,
  • එය අන්තර්ක්‍රියාකාරී කවචයකින් ලබා ගනී,
  • එය දැනටමත් උපුටා ගෙන ඇත

... ඉන්පසු ඒවා අනුව සම්පූර්ණයෙන්ම වෙනස් දේවල් කරයි.

ඉහත ප්‍රස්ථාරය මතක තබා ගත හැකි යැයි ඔබ සිතන්නේ නම් එය ප්‍රමාණවත් නොවන නිසා: මෙම ප්‍රස්ථාරය හුදෙක් එක් සිද්ධියක් පමණක් විස්තර කරයි, අන්තර්ක්‍රියාකාරී නොවන ස්ක්‍රිප්ට් ධාවනය කිරීමේදී හෝ චිත්‍රක සැසියක් ආරම්භ කිරීමේදී තරමක් වෙනස් දේවල් සිදු වේ. මම අතහැර දමා ~/.profileඇත. මම bash_completionස්ක්‍රිප්ට් අතහැර දමා ඇත. පසුගාමී අනුකූලතා හේතූන් මත, එහි හැසිරීම වෙනස් /bin/shකරනවා වෙනුවට බැෂ් ආයාචනය කිරීම /bin/bash. Zsh සහ වෙනත් ෂෙල් වෙඩි ගැන කුමක් කිව හැකිද? ඇත්ත වශයෙන්ම විවිධ ලිනක්ස් බෙදාහැරීම් වෙනස් ආකාරයකින් කටයුතු කරයි, නිදසුනක් ලෙස ඩේබියන් සහ උබුන්ටු බාස් එච් හි සම්මත නොවන අනුවාදයක් සමඟ පැමිණේ , එයට ඩේබියන් විශේෂිත අභිරුචිකරණයන් ඇත. එය අසාමාන්‍ය ගොනුවක් සොයයි:/etc/bash.bashrc. ඔබ තනි ලිනක්ස් බෙදාහැරීමකට ඇලී සිටියත් එය කාලයත් සමඟ පරිණාමය වේ. රැඳී සිටින්න: අපි මැකෝස්, ෆ්‍රීබීඑස්ඩී, ස්පර්ශ කර නැත ... අවසාන වශයෙන්, ඔවුන්ගේ පරිපාලකයින් විසින් භාවිතා කළ යුතු පද්ධතිය වින්‍යාස කර ඇති ඊටත් වඩා නිර්මාණාත්මක ක්‍රම සමඟ සිරවී සිටින පරිශීලකයින් ගැන සිතමු.

මෙම මාතෘකාව පිළිබඳ කවදාවත් නොනවතින සාකච්ඡා ධාරාව පෙන්නුම් කරන පරිදි, එය නැතිවූ හේතුවකි. ඔබට නව අගයන් එක් කිරීමට අවශ්‍ය තාක් කල්, සමහර “අත්හදා බැලීම් සහ දෝෂ” ප්‍රමාණවත් වේ. සැබෑ විනෝදය ආරම්භ වන්නේ ඔබට එක් (පරිශීලක) ගොනුවක දැනටමත් වෙනස් කර ඇති දෙයක් (වෙනත් / in) වෙනස් කිරීමට අවශ්‍ය වූ විටය . කිසි විටෙකත් අතේ ගෙන යා නොහැකි විසඳුමක් ඉංජිනේරු කාලය ගත කිරීමට සූදානම්ව සිටින්න.

අවසාන විනෝදය සඳහා, 2019 ජුනි මස වන විට ක්ලියර් ලිනක්ස් පිළිබඳ සරල, සරල දර්ශනයක් සඳහා “ප්‍රභව ප්‍රස්තාරය” මෙන්න:

ssh clearlinux
 └─ -bash # login shell
      ├── /usr/share/defaults/etc/profile
      |    ├─ /usr/share/defaults/etc/profile.d/*
      |    ├─ /etc/profile.d/*
      |    └─ /etc/profile
      ├── ~/.bash_profile
      |
      |
      └─  $ bash   # non-login shell
           ├─ /usr/share/defaults/etc/bash.bashrc
           |      ├─ /usr/share/defaults/etc/profile
           |      |    ├─ /usr/share/defaults/etc/profile.d/*
           |      |    ├─ /etc/profile.d/*
           |      |    └─ /etc/profile
           |      └─ /etc/profile
           └─ ~/.bashrc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.