පර්යන්තයක් විවෘත කිරීමේදී ~ / .bash_profile ලබා නොගන්නේ ඇයි?


186

ගැටලුව

මා සතුව උබුන්ටු 11.04 අතථ්‍ය යන්ත්‍රයක් ඇති අතර මගේ ජාවා සංවර්ධන පරිසරය සැකසීමට මට අවශ්‍ය විය. මම පහත පරිදි කළෙමි

  1. sudo apt-get install openjdk-6-jdk
  2. පහත සඳහන් ඇතුළත් කිරීම් ~ / .bash_profile වෙත එක් කරන ලදි

    export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
    
    export PATH=$PATH:$JAVA_HOME/bin
    
  3. වෙනස්කම් සුරකිමින් පිටවන්න

  4. නැවත පර්යන්තයක් විවෘත කර පහත සඳහන් දේ ටයිප් කරන්න

    echo $JAVA_HOME   (blank)
    echo $PATH        (displayed, but not the JAVA_HOME value)
    
  5. JAVA_HOME අපනයනය කිරීම සහ එය PATH ට එකතු කිරීම වැනි කිසිවක් සිදු නොවීය.

විසඳුමක්

මට ~ / .bashrc වෙත ගොස් පහත දැක්වෙන ප්‍රවේශය ගොනුවේ අවසානයට එක් කිරීමට සිදු විය

#Source bash_profile to set JAVA_HOME and add it to the PATH because for some reason is not being picked up
. ~/.bash_profile

ප්රශ්නය

  1. මට එය කිරීමට සිදු වූයේ ඇයි? මම හිතුවේ bash_profile, bash_login හෝ profile එක නැතිනම් මුලින්ම bashrc ට පෙර ක්‍රියාත්මක වේ.
  2. මෙම අවස්ථාවේදී මගේ පර්යන්තය පුරනය නොවන කවචයක්ද?
  3. එසේ නම්, පර්යන්තයෙන් පසුව සු සහ මුරපදය දැමූ විට මා ඉහත සඳහන් කළ අපනයන ද සකසා ඇති පැතිකඩ ක්‍රියාත්මක නොකරන්නේ ඇයි?

Answers:


236

~/.bash_profileඅන්තර්ක්‍රියාකාරී පිවිසුම් ප්‍රකාරයේදී ආරම්භ කළ විට පමණක් එය බාෂ් මඟින් ලබා ගනී. එය සාමාන්‍යයෙන් සිදුවන්නේ ඔබ කොන්සෝලය ( Ctrl+ Alt+ F1.. F6) වෙත පිවිසෙන විට හෝ ssh හරහා සම්බන්ධ වන විට පමණි.

ඔබ ප්‍රස්ථාරිකව ලොග් වූ විට, ~/.profilegnome-session (හෝ ඔබ භාවිතා කරන ඕනෑම ඩෙස්ක්ටොප් පරිසරයක්) දියත් කරන ස්ක්‍රිප්ට් මඟින් විශේෂයෙන් උපුටා ගනු ලැබේ. ඒ නිසා ~/.bash_profileඔබ නාටකාකාර ලෙස ලොග් විට සියලු දී මූලාශ්ර නැත.

ඔබ ටර්මිනලයක් විවෘත කළ විට, ටර්මිනලය (පිවිසුම් නොවන) අන්තර්ක්‍රියාකාරී ප්‍රකාරයේදී ආරම්භ වේ, එයින් අදහස් වන්නේ එය ප්‍රභවයක් වනු ඇති ~/.bashrcබවයි.

මෙම පරිසර විචල්‍යයන් තැබීමට ඔබට සුදුසු ස්ථානය ~/.profileතිබේ, ඊළඟ වතාවේ ඔබ පිවිසෙන විට එහි බලපෑම පැහැදිලිව පෙනේ.

මාර්ග අපගත ~/.bash_profileසිට ~/.bashrcවැරදි විසඳුම. එය අනෙක් පැත්ත විය යුතුය; ~/.bash_profileප්‍රභව විය යුතුය ~/.bashrc.

එය එසේ වන්නේ ඇයිද යන්න පිළිබඳ සමහර ඉතිහාසය ඇතුළුව වඩාත් සවිස්තරාත්මක පැහැදිලි කිරීමක් සඳහා ඩොට් ෆයිල්ස් බලන්න .

(පැති සටහනක, apt හරහා openjdk ස්ථාපනය කරන විට, පැකේජය මඟින් සිම්ලින්ක්ස් සැකසිය යුතුය, එවිට ඔබට සැබවින්ම සැකසීමට JAVA_HOMEහෝ වෙනස් කිරීමට අවශ්‍ය නොවේ PATH)


6
උබුන්ටු 12 හි පැති තීරුවෙන් පර්යන්තයක් විවෘත කරන විට ~ / .ප්‍රොෆයිල් ගොනුව පටවා නැති බව මට පෙනී ගියේය.
jcollum

3
oljcollum ඒක හොඳයි. .profileලබා ගත යුත්තේ ඔබ ලොග් වූ විට පමණි.
geirha

2
ඔහ්, ටර්මිනලයක් විවෘත කිරීම ලොග් වීම හා සමාන නොවේ ... මම සිතුවේ ටර්මිනලයට පිවිසීමටයි .
jcollum

3
පවතින්නේ .profileනම් බාෂ් විසින් නොසලකා හරින ලද බව මතක තබා ගන්න .bash_profile. මගේ පිළිතුර මෙතැනින් සහ man bashවැඩි විස්තර සඳහා බලන්න.
ටර්ඩන්

3
@terdon, ඔව්, නමුත් ප්‍රස්තාරිකව ලොග් වන විට bash සම්බන්ධ නොවේ, එබැවින් එය කෙළින්ම යයි .profile.
geirha

48

ධාවනය කිරීමෙන් ඔබගේ බෑෂ් කවචය පිවිසුම් කවචයක් ලෙස ආරම්භ කර ඇත්දැයි ඔබට පරීක්ෂා කළ හැකිය:

shopt login_shell

පිළිතුර නම් offඔබ පිවිසුම් කවචයක් ධාවනය නොකරයි.

විවිධ වින්‍යාස ලිපිගොනු බාෂ් කියවන ආකාරය (හෝ කියවන්නේ නැති) පිළිබඳ බාෂ් අත්පොතේ ආයාචනා අංශය කියවන්න.

උපුටා ගැනීම man bash:

බාෂ් අන්තර්ක්‍රියාකාරී පිවිසුම් කවචයක් ලෙස හෝ --login විකල්පය සහිත අන්තර්ක්‍රියාකාරී නොවන කවචයක් ලෙස ආයාචනා කළ විට /etc/profile, එම ගොනුව තිබේ නම් එය මුලින්ම ගොනුවේ විධාන කියවා ක්‍රියාත්මක කරයි . එම ගොනුව කියවීමෙන් පසු, ඒ සඳහා බලයි ~/.bash_profile, ~/.bash_loginහා ~/.profileපවතී, කියවිය හැකි බව පළමු එක් සිට, ඒ සඳහා, සහ ලිවීම් හා ඉටු කරන විධාන.

suඅනෙක් අතට පෙරනිමියෙන් පිවිසුම් කවචයක් ආරම්භ නොකරයි, --loginවිකල්පය භාවිතා කර එසේ කිරීමට ඔබට එය පැවසිය යුතුය .


9
Shotp login_shell විධානයට බොහෝම ස්තූතියි . නියමයි !!
විරියාටෝ

30

පැතිකඩ මනාපයන් සංස්කරණය කිරීමෙන් ඔබට පිවිසුම් කවචයක් (එනම්. Bash -l) භාවිතා කිරීම සඳහා gnome-terminal හි පෙරනිමිය වෙනස් කළ හැකි බව සඳහන් කිරීම වටී යැයි මම සිතමි.

සංස්කරණය -> පැතිකඩ මනාපයන් -> මාතෘකාව සහ විධාන පටිත්ත වෙත ගොස් "විධානය පිවිසුම් කවචයක් ලෙස ධාවනය කරන්න" විකල්පය පරීක්ෂා කරන්න


1
මෙම සැකසුම සක්‍රීය කිරීමේ අවාසි මොනවාද?
ක්‍රිෂ්

2
ris ක්‍රිස් ඔබ බොහෝ අවස්ථාවලදී කේතයට අවශ්‍ය ප්‍රමාණයට වඩා ටිකක් කේත පූරණය කරමින් සිටී. ඔබ ~/.bash_profileඉතා ඉක්මණින් තක්සේරු කරන්නේ නම් එය බොහෝ විට වැදගත් නොවේ . පරීක්ෂා කිරීම සඳහා හොඳ දෙයක් නම් සාමාන්‍යයෙන් තරමක් මිල අධික වන වෙනත් ක්‍රියාදාමයන් සඳහා වන ඕනෑම ඇමතුමක් හඹා යාමයි.
vaab

16

ඔබ ටර්මිනලයක් විවෘත කළහොත් හෝ suකවචය ධාවනය කරන්නේ නම් එය පිවිසුම් කවචයක් ලෙස නොව සාමාන්‍ය අන්තර්ක්‍රියාකාරී කවචයක් ලෙස ක්‍රියාත්මක වේ. එබැවින් එය කියවන ~/.bashrcනමුත් නැත ~/.bash_profile. පිවිසුම් කවචයක් ලෙස ඔබේ කවචය ධාවනය කිරීමට ඔබට විකල්පය suසමඟ ධාවනය කළ හැකිය -l.

ඔබ GUI සමඟ වැඩ කරන විට කවචය කිසි විටෙකත් පිවිසුම් කවචයක් ලෙස ක්‍රියාත්මක නොවන බැවින් සාමාන්‍යයෙන් සියලු දේ ඇතුලත් කිරීම සුදුසුය ~/.bashrc.


1
එය මා විසින් කර ඇති අතර එය ක්‍රියාත්මක විය, නමුත් පතුලේ සිටින පුද්ගලයා පවසන්නේ කුමක්දැයි පරීක්ෂා කරන්න, ඔහු යෝජනා කරන්නේ එය bashrc තුළට දමා ඒ වෙනුවට පැතිකඩෙහි තැබීම නරක අදහසක් බවයි. .... ඒයි ක්‍රම දෙකම වැඩ කරනවා, ගොඩක් ස්තූතියි.
විරියාටෝ

4

ටීඑල්; ඩී.ආර්

සම්භාව්‍ය නිර්දේශිත උබුන්ටු සැකසුම තුළ, ~/.bash_profileඇගයීමට ලක් වන්නේ නිශ්චිත අවස්ථා වලදී පමණි. එය අර්ථවත් කරයි.

ඔබේ දේවල් දමන්න ~/.bashrc, එය සෑම විටම ඇගයීමට ලක් වේ.

හරි, මට තේරුම් ගැනීමට අවශ්‍යයි, මෙය අර්ථවත් වන්නේ ඇයි?

සිදුවන්නේ කුමක්ද යන්න තේරුම් ගැනීමට යතුරු ලකුණු:

  • ලිනක්ස් හි ඇති සියලුම ක්‍රියාදාමයන්ට පරිසර විචල්‍යයන් ඇත
  • පරිසර විචල්‍යයන් උරුම වේ
  • මේ අනුව ඔබේ සියලු ක්‍රියාවලීන්ගේ පියා වෙත එක් වරක් සැකසීම ප්‍රමාණවත් වේ (විශේෂයෙන් එයට යම් ගණනය කිරීමේ කාලයක් අවශ්‍ය නම්.)
  • ඔබට පසු ඔබගේ සියලු ක්රියාවලිය පියා සාමාන්යයෙන් ආරම්භ වන්නේ ලොග් (ඔබගේ අක්තපත්ර ලබා) ඔබගේ උපාංගය මත.
  • ඔබ ඔබේ පරිගණකයට පිවිසෙන විට එක් වරක් පමණක් කිරීමට අවශ්‍ය විය හැකිය (උදාහරණයක් ලෙස නව තැපැල් සඳහා පරීක්ෂා කරන්න ...).

එබැවින් "පිවිසුම්" කාලය සාමාන්‍යයෙන්:

  • කොන්සෝල ප්‍රකාරයේදී, ඔබ පිවිසෙන විට (Ctrl-Alt F1 සමඟ) හෝ හරහා ssh, කවචය සියලු ක්‍රියාවලීන්ගේ පියා වන බැවින්, එය ඔබගේ පූරණය ~/.bash_profileවේ.
  • ග්‍රැෆික් ප්‍රකාරයේදී, ඔබ ඔබේ සැසිය විවෘත කරන විට, පළමු ක්‍රියාවලිය ( gnome-sessionසම්භාව්‍ය උබුන්ටු සඳහා) කියවීම භාරව සිටී
    .profile.

හරි, ඉතින් මගේ දේවල් කොහෙද දාන්නේ?

එය තරමක් සංකීර්ණයි, සම්පූර්ණ කතාව මෙහි ඇත. නමුත් මෙහි උබුන්ටු භාවිතා කරන්නන් සඳහා බහුලව භාවිතා වන ධාවන පථයක් ඇත. එබැවින් එය සලකා බලන්න:

  • ඔබ bashෂෙල් භාවිතා කරයි ,
  • ඔබ තුළ ඇති ~/.bash_profileසහ අනුගමනය නිර්දේශ පැටවීම එකතු කිරීමට ~/.bashrc, ඔබේ ~/.bash_profileඅවම වශයෙන් ලබා ගැනීමට තරම් යාදින්න mecanism ඕනෑම ඇගයීමට රැඳි එක් ගොනුවක් .

මෙය දේවල් දැමිය යුතු ස්ථානය පිළිබඳ ඉක්මන් යෝජනාවකි.

  • ~ / .bashrc ( ඔබ නිර්දේශය අනුගමනය කරන්නේ නම් සෑම අවස්ථාවකම ඇගයීමට ලක් වේ )

    ඔබේ පරිශීලකයාට පමණක් සහ බාෂ්-පමණක් විධාන රේඛා භාවිතය සඳහා වේගවත් ඇගයීම් පරිසර විචල්‍යය සහ කේතය සඳහා (උදාහරණයක් ලෙස අන්වර්ථ නාම). bashism සාදරයෙන් පිළිගනිමු.

    එය මත පැටවීම:

    • චිත්‍රක සැසි තුළ නව කවච කවුළුවක් / කවුළුවක් සාදන්න.
    • ඇමතුම් bash
    • screenනව කවුළුව හෝ පටිත්ත. (නැත tmux!)
    • චිත්‍රක කොන්සෝල සේවාදායකයකුගේ ( terminator/ gnome-terminal...) කිසියම් කඩඉම් අවස්ථාවක් ඔබ "විධානය පිවිසුම් කවචය ලෙස ක්‍රියාත්මක නොකරන්න " යන විකල්පය තෝරා නොගන්නේ නම් .

    පූර්ව නිර්දේශයට ස්තූතිවන්ත වන අතර අනෙක් සෑම අවස්ථාවකම එය පටවනු ලැබේ.

  • ~ / .bash_profile ( නිශ්චිත අවස්ථාවකදී පමණක් ඇගයීමට ලක් වේ )

    සඳහා මන්දගාමී ඇගයීම සඳහා ඔබේ පරිසර විචල්ය හා කේතය පරිශීලක පමණක් සහ කොන්සෝලය-සැසිය ක්රියාවලිය. bashism සාදරයෙන් පිළිගනිමු. එය පටවනු ලැබේ:

    • කොන්සෝල පිවිසුම (Ctrl-Alt F1),
    • ssh මෙම යන්ත්‍රයට ප්‍රවේශ වේ,
    • tmuxනව කවුළුව හෝ කවුළු (පෙරනිමි සැකසුම්), (නැත screen!)
    • හි පැහැදිලි ඇමතුම් bash -l,
    • චිත්‍රක කොන්සෝල සේවාදායකයකුගේ ( terminator/ gnome-terminal...) ඕනෑම කඩඉමක් ඔබ "විධානය පිවිසුම් කවචය ලෙස ක්‍රියාත්මක කරන්න" යන විකල්පය තෝරා ගන්නේ නම් පමණි .
  • ~ / .ප්‍රොෆයිල් (ඇගයීමට ලක් වන්නේ චිත්‍රක-සැසියකදී පමණි)

    සඳහා මන්දගාමී ඇගයීම පරිසරයට විචල්ය හා සමග කිසිදු-bashism ඔබගේ සඳහා පරිශීලක එකම සහ සියලු චිත්රක-සැසිය ක්රියාවලිය. එය ඔබගේ චිත්‍රක UI තුළට ප්‍රවේශ වූ විට පටවනු ලැබේ.


බැෂ් විසින් පැතිකඩ ගොනුවක් පටවන අවස්ථා වලදී, එය නොපවතී .profileනම් එය පූරණය .bash_profileවේ.
මුරු

පැහැදිලි පැහැදිලි කිරීමකට බොහොම ස්තූතියි. එය මා වැනි නවකයන්ට උදව් කරයි. මැක් මොජාවේ දී, මම විචල්යයන් ~ / .bashrc තුළට දමා මූලාශ්රය කරන්නේ නම්, එවිට මම envenv විචල්යයන් සකසා නොපෙනේ නම් (මම iTerm වසා නැවත විවෘත කිරීමට උත්සාහ කළෙමි). නමුත් මම ඇන්ඩ්‍රොයිඩ් ස්ටුඩියෝ සහ වෙනත් යෙදුම් ස්ථාපනය කරන විට, එම සියලු එන්වර්ස් වර්ග සකසා ඇති බව මම දනිමි /.bash_profile. ඒ නිසා මම /.bash_profileඑය එකතු කළ විට එය චමත්කාරය මෙන් වැඩ කළා. ඇයි ඒ?
sofs1

0

ඔබ sudo suෂෙල් එක ක්‍රියාත්මක නොකරන විට, ඒ වෙනුවට උත්සාහ කිරීම පෙරනිමියෙන් ප්‍රභවයක් ලෙස sudo su -පූරණය ~/.bash_profileවේ.

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.