.Bashrc හි අරමුණ කුමක්ද සහ එය ක්‍රියාත්මක වන්නේ කෙසේද?


176

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



ඔබ එය ක්‍රියාත්මක කරන්න $ bash myFile.bashrc. මෙය අස්ථානගත වී ඇති බව මට පෙනී ගියේය :)
Pe Dro

Answers:


165

.bashrcඑය අන්තර්ක්‍රියාකාරීව ආරම්භ කරන සෑම විටම බාෂ් ධාවනය කරන ෂෙල් පිටපතකි . එය අන්තර්ක්‍රියාකාරී ෂෙල් සැසියක් ආරම්භ කරයි. විධාන විමසුමේදී ඔබට ටයිප් කළ හැකි ඕනෑම විධානයක් එම ගොනුවට දැමිය හැකිය.

ඔබේ විශේෂිත පරිසරය තුළ භාවිතා කිරීම සඳහා කවචය සැකසීමට හෝ ඔබේ අභිමතය පරිදි දේවල් රිසිකරණය කිරීමට ඔබ මෙහි විධාන දමයි. ක්රියාත්මක කිරීමට පොදු දෙයක් .bashrcඇත යොමුවීම් ඔබ හැම විටම ලබා ගත කිරීමට අවශ්ය බව.

.bashrcමත ධාවනය සෑම අන්තර් ෂෙල් දියත්. ඔබ කියන්නේ නම්:

$ bash ; bash ; bash

ඉන්පසු Ctrl-Dතුන් වතාවක් පහර දෙන්න, තුන් වරක් .bashrcධාවනය වේ. නමුත් ඔබ ඒ වෙනුවට පවසන්නේ නම්:

$ bash -c exit ; bash -c exit ; bash -c exit

එවිට බාෂ් ඇමතුම අන්තර්ක්‍රියාකාරී නොවන .bashrcබැවින් -cඑය කිසිසේත් ක්‍රියාත්මක නොවේ . ඔබ ගොනුවකින් ෂෙල් ස්ක්‍රිප්ට් ධාවනය කරන විටද එය සත්‍ය වේ.

පරස්පරතාව .bash_profileසහ .profileඒවා ක්‍රියාත්මක වන්නේ නව පිවිසුම් කවචයක ආරම්භයේ පමණි. ( bash -l) ඔබ විධාන යනවා, යන්න තෝරා .bashrcඑදිරිව .bash_profileඔබ එය එක් වරක් හෝ සෑම අන්තර් ෂෙල් ආරම්භයක් ක්රියාත්මක කිරීමට අවශ්ය නැද්ද යන්න මත මත පදනම්ව.

අන්වර්ථ නාමයන්ට ප්‍රති-ආදර්ශයක් ලෙස, මම දැමීමට කැමති .bashrc, ඔබට ඒ වෙනුවට අවශ්‍ය PATHවෙනස්කම් කිරීමට අවශ්‍යය .bash_profile, මන්ද මෙම වෙනස්කම් සාමාන්‍යයෙන් හඳුනාගත නොහැකි ය :

export PATH="$PATH:/some/addition"

ඔබ ඒ .bashrcවෙනුවට තැබුවහොත් , ඔබ අන්තර්ක්‍රියාකාරී උප කවචයක් දියත් කළ සෑම අවස්ථාවකම :/some/addition, PATHනැවත වරක් අවසානයට සම්බන්ධ වනු ඇත, ඔබ විධානයක් වැරදි ලෙස ටයිප් කරන විට කවචය සඳහා අමතර වැඩක් නිර්මාණය කරයි.

ඔබ සෑම විටම නව අන්තර් බෑෂ් shell එකක් ලබා පිටතට ශෙලයvi සමග :shඋදාහරණයක් ලෙස,.


7
සුළු විචලනය: අනෙක් බොහෝ ෂෙල් වෙඩි මෙන් නොව, බැෂ් එය පිවිසුම් කවචයක් ලෙස ආරම්භ කරන විට එක් එක් අවස්ථාව වින්‍යාස ගොනුව ස්වයංක්‍රීයව පටවන්නේ නැත.bashrc . මෙය සමහර විට අනපේක්ෂිත ලෙස හැසිරීමට හේතු විය හැක . සුපුරුදු විසඳුම වන්නේ ප්‍රභවය හෝ ඒ වෙනුවට .bashrcලබා ගැනීමයි. .profile.bash_profile
ඉල්මාරි කරොනන්

2
LIlmariKaronen .bashrcවෙනත් ෂෙල් වෙඩි භාවිතා කිරීමට අදහස් නොකරන බැවින් , එය වෙනත් මූලාශ්‍රවලින් ලබා නොගැනීම හොඳය .profile(ඒවා වෙනත් bashෂෙල් නොවන අය විසින් භාවිතා කළ හැකිය ).
චෙප්නර්

විට: (මම කොහොමද ඇයි එකතුකරන්න කියවීමට) සිදු වන දෙය @IlmariKaronen source ~/.bashrcහෝ . ~/.bashrcහෝ [[ -f ~/.bashrc ]] && source. ~/.bashrcහෝ [ -f ~/.bashrc ] && source ~/.bashrcවැඩ නැහැ?
නිකොස් ඇලෙක්සැන්ඩ්‍රිස්

IkNikosAlexandris: එය වෙනම ප්‍රශ්නයකි. කරුණාකර එය වෙනම විමසන්න .
වොරන් යං

ArWarrenYoung නමුත් .bashrcඑය ඇත්තෙන්ම මූලාශ්‍රයක් බව මම තේරුම් ගතිමි ( superuser.com/a/183980/128768 වෙතින් නිර්දේශිත විධානය භාවිතා කරමින් ). මා මුහුණ දෙන ගැටලුව ඇත්ත වශයෙන්ම https://github.com/junegunn/fzfමෙම විධානය ඇතුළත ලබා නොගැනීමයි .bashrc: source ~/.fzf.bash. මම නව පර්යන්තයක් දියත් කරමි, පසුව Ctrl+ Rසහ මට ලැබේ `__fzf_history__`bash: fzf: command not found. මම අතින් ප්‍රභව කරන .bashrcඅතර එකම යතුරු කෙටිමඟ අපේක්ෂිත පරිදි fzf දියත් කරයි. මෙහි ශබ්දය සඳහා සමාව ඉල්ලන්න.
නිකොස් ඇලෙක්සැන්ඩ්‍රිස්

33

.bashrcගොනුවක පරමාර්ථය නම් ඔබට විචල්‍යයන්, කාර්යයන් සහ අන්වර්ථයන් සැකසිය හැකි ස්ථානයක් සැපයීම, ඔබේ (PS1) විමසුම නිර්වචනය කිරීම සහ ඔබ නව පර්යන්ත කවුළුවක් විවෘත කරන සෑම අවස්ථාවකම භාවිතා කිරීමට අවශ්‍ය වෙනත් සැකසුම් නිර්වචනය කිරීමයි.

ඔබ නව පර්යන්තයක්, කවුළුවක් හෝ කවුළුවක් විවෘත කරන සෑම අවස්ථාවකම එය ක්‍රියාත්මක කිරීමෙන් එය ක්‍රියාත්මක වේ.

සුපිරි අවම කෙනෙකුට පහත සඳහන් දේ තිබිය හැකිය:

export CLICOLOR=1
export LANG="en_US.UTF-8"
alias cp="cp -i"
alias ls="ls --color=auto"
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
export EDITOR="vim"

ආරම්භ කිරීමට ඔබ සැබවින්ම දන්නේ එපමණයි


පළපුරුදු සංවර්ධකයින් සඳහා ප්‍රයෝජනවත් “ඕවර්කිල්” අනුවාදය මෙන්න:

පළපුරුදු සංවර්ධකයෙකුට බොහෝ විට තවත් බොහෝ දේ ඇත.
ඔබට මෙහි මගේ දැක ගත හැකිය (සින්ටැක්ස් ඉස්මතු කිරීම සමඟ පින්තූරය) :

HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }
git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; }
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
PS2='\[\033[01;36m\]>'
set -o vi # vi at command line
export EDITOR=vim
test -f ~/.bash_aliases && . $_
test -f ~/.git-completion.bash && . $_
test -s ~/.autojump/etc/profile.d/autojump && . $_
[ ${BASH_VERSINFO[0]} -ge 4 ] && shopt -s autocd
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$home/.rvm/scripts/rvm"

පැහැදිලි කිරීම:

-1. අනුපිටපත් නොසලකා හැර පෙරනිමියට වඩා විශාල වීමට මගේ ඉතිහාස ගොනුව සකසන්න.
-2. lsඔබ ලිනක්ස් හෝ ඕඑස්එක්ස්
-3 භාවිතා කරන්නේද යන්න මත පදනම්ව වර්ණ විකල්පය . mdඑක් විධානයක් සහිත ඩිරෙක්ටරියක් බවට පත් කිරීම සහ සීඩී කිරීම " " ශ්‍රිතය
. Git repo එකක තිබේ නම් වත්මන් git ශාඛාව සොයා ගන්න සහ ...
-5. -9. <code> 20:00:43 durrantm Castle2012 / hom / durrantm / Dropnot / _ / rails_apps / linker master \ n $ _ </code>
-10 හි මෙන් නියම PS1 විමසුමක් නිර්වචනය කරන්න . වැඩි දියුණු කළ PS2 විමසුම
-11.
-12 විධාන රේඛාවේ vi සංස්කාරකය ලෙස සකසන්න . Vi පෙරනිමි සංස්කාරකය ලෙස සකසන්න
-13. මගේ .bash_aliasesගොනුව තිබේ නම් එය ක්‍රියාත්මක කරන්න
-14. මගේ git ටැබ් සම්පුර්ණ ස්ක්‍රිප්ට් (දුරස්ථ හා ශාඛා සඳහා) තිබේ නම් එය ක්‍රියාත්මක කරන්න.
-15. ස්වයංක්‍රීය ජම්ප් පවතී නම් එය ක්‍රියාත්මක කරන්න
-16. Bash version> = 4 නම් cd කොටස ටයිප් නොකර cd'ing ට ඉඩ දෙන්න
-17.
-18 නම් සම්පූර්ණ කිරීමේ පිටපතක් ක්‍රියාත්මක කරන්න . TMUX තිබේ නම් එය භාවිතා කරන්න
-19. මගේ PATH
-20 වෙත rvm එක් කරන්න . Rvm තිබේ නම් එය භාවිතා කරන්න.

මම මෙය අතේ ගෙන යා හැකි පරිදි සකසා ඇති අතර එය මගේ ඕනෑම ලිනක්ස් හෝ ඕඑස්එක්ස් යන්ත්‍රයක අභිරුචිකරණයකින් තොරව ක්‍රියා කරයි - එබැවින් ඇතැම් කාර්යයන් සහ වෙනත් ස්ක්‍රිප්ට් භාවිතා කිරීමට පෙර පැමිණ සිටීම සඳහා පරීක්ෂණ ගණනාවක් සිදු කරනු ලැබේ.

නව පර්යන්ත කවුළුවක් විවෘත කිරීමට බලපාන ගැටළු නොමැතිව නව ගොනුවක් මත සම්පූර්ණ ගොනුව වහාම භාවිතා කිරීමද මෙය පහසු කරයි.

මතක් කරන්න - ඔබ ඔබේ .bashrc වෙනස් කරන්නේ නම්, නැවත ආරම්භ කිරීමට පෙර එය ක්‍රියාත්මක වන බවට වග බලා ගැනීම සඳහා නව පර්යන්ත කවුළුවක් ආරම්භ කිරීමට වග බලා ගන්න (හොඳම පුහුණුව - වෙනස් වූ වහාම එය කරන්න). ඔබ කවදා හෝ ඔබේ .bashrc අවුල් කර නැවත පණගන්වන්නේ නම් ඔබට පිවිසීමට හැකියාවක් නැත! පුද්ගලිකව මම පුද්ගලික යන්ත්‍රවල දෙවන 'පරිපාලක' පරිශීලකයෙකු ද නිර්මාණය කරමි, එවිට එවැනි හදිසි අවස්ථාවකදී (බිඳුණු පිවිසුම්), මට එයට ප්‍රවේශ වී මගේ අනෙක් පිවිසුම් .bashrc ගොනුව නිවැරදි කිරීමට sudo භාවිතා කළ හැකිය.


ඕවර්කිල් ... ͏͏͏͏͏͏͏͏͏
පැසීරියර්

2
හහ්? ඔබට බොහෝ ප්‍රයෝජනවත්ද?
මයිකල් ඩුරන්ට්

3
බෙදාගැනීම ගැන ඔබට බොහෝම ස්තූතියි. මෙහි තොරතුරු රාශියක්.
Vic

10

එය bashවින්‍යාස ගොනුවකි.

අන්තර්ක්‍රියාකාරී (පුරනය නොවන) ෂෙල් වෙඩි, පසුව වින්‍යාසය මෙම ලිපිගොනු වලින් කියවනු ලැබේ:

  • $HOME/.bashrc

පිවිසුම් කවච සඳහා, වින්‍යාසය මෙම ලිපිගොනු වලින් කියවනු ලැබේ:

  • /etc/profile (සැමවිටම උපුටා ගන්නා ලදි)
  • $HOME/.bash_profile (මෙම ලිපිගොනු සොයා ගන්නා තෙක් අනුපිළිවෙලින් පරීක්ෂා කරනු ලැබේ, පසුව වෙනත් කිසිවක් කියවන්නේ නැත)
  • $HOME/.bash_login
  • $HOME/.profile

ඒවා පටවන ආකාරය / කෙසේද යන්න පිළිබඳ සරල නිදර්ශනයක් පහත රූපයේ ඇත.

මම echoමගේ .bashrcසහ.bash_profile

අන්තර් ක්‍රියාකාරී කවච එදිරිව පිවිසුම් කවචය

man bashවැඩි විස්තර සඳහා බලන්න


2
මෙය ඇත්ත වශයෙන්ම පැරණි ප්‍රශ්නයකට අමතර වටිනාකමක් එක් නොකරයි. එසේම, ඔබ යුනික්ස් සහ ලිනක්ස් වලට අළුත් බව මට පෙනේ, පෙළෙහි පින්තූර පළ නොකිරීමට උත්සාහ කරන්න, ඒ වෙනුවට කේත වාරණ ආකෘතිකරණය සහ ඔබේ කොන්සෝලයෙන් පිටපත් කිරීම වඩා හොඳය. මෙමඟින් පෙළ සෙවීමට / පිටපත් කිරීමට / යනාදිය ඉඩ ලබා දේ. ඔබේ උදාහරණය සම්බන්ධයෙන් සැබවින්ම සංකීර්ණ විධානයන් හෝ සෙවීමට හොඳ කිසිවක් නොමැත, නමුත් වෙනත් පිළිතුරු සඳහා හොඳ පුරුද්දකි.
සෙන්ටිමන්

1
'පරණ ප්‍රශ්නය' පිළිබඳ ඔබේ සඳහන මට සම්පූර්ණයෙන්ම වැටහී ඇති බව මට විශ්වාස නැත. එය ඉහළම ප්‍රශ්න ලැයිස්තුවේ ඇති අතර එය 60k අදහස් සමඟ අදාළ වේ. පෙර පිළිතුරු මෙන් සංවාදයකට / අනුමානයකට පටහැනිව, එකතු කළ අගය ආකෘතියෙන් පැමිණ ඇතැයි මම සිතුවෙමි. නමුත් ආකෘතිය සංස්කරණය කර ඇත. කේත බ්ලොක් භාවිතා කිරීම පිළිබඳ ඔබගේ අදහස් මම මතකයේ තබා ගන්නෙමි, ස්තූතියි.
තිමෝති එල්.ජේ. ස්ටුවර්ට්

2
ඔබ 'ක්‍රියාකාරී' ප්‍රශ්න ලැයිස්තුවේ ඉහළින්ම සිටින්නේ ඔබ පිළිතුරක් පළ කළ බැවිනි. ප්‍රශ්නය මුලින් ඇසුවේ 2014 දී ය. පිළිගත් පිළිතුරෙහි දැක්වෙන්නේ ඔබේ පිළිතුරේ අන්තර්ගතය සහ ඒවා .bashrcඅතර වෙනස අතර වෙනස සහ වෙනස හඳුනා ගැනීමයි . අධෛර්යමත් නොවන්න, ඔබ අවංක උත්සාහයක් ඉදිරිපත් කරයි, නමුත් වෙනත් පිළිතුරු වලින් ආවරණය නොවන සමහර අන්තර්ගතයන් සමඟ ප්‍රශ්නවලට පිළිතුරු දීමට අවධානය යොමු කරන්න. .bashrc.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.