Lisa F: shelli seadistusfailid Bashi ja zsh jaoks
Seadistusfailist saad uuele shellile anda ajaloo, viiba ja oma lühikäsud. Vali kõigepealt oma shelli põhiseadistus; lisa ühised mugavused ainult üks kord. Kogu faili asendamise asemel täienda olemasolevat seadistust.
Milline shell ja milline fail?
ps -p $$ näitab praegust shelliprotsessi. echo "$SHELL" näitab tavaliselt kontole seadistatud sisselogimisshelli; need võivad erineda.
| Shell | Interaktiivse seadistuse asukoht |
|---|---|
| zsh | ~/.zshrc |
| Bash | ~/.bashrc |
| Bashi sisselogimisshell, sageli macOS-i terminalis | ~/.bash_profile, mis võib laadida ~/.bashrc |
Need on tavapärased asukohad; zsh ZDOTDIR võib seadistuste kataloogi muuta. Bash loeb sisselogimisel esimese olemasoleva faili järjestusest .bash_profile, .bash_login, .profile.
Enne muutmist tee olemasolevast failist koopia. Näiteks zsh puhul:
cp -i ~/.zshrc ~/.zshrc.backup
nano ~/.zshrc
-i küsib enne olemasoleva varukoopia ülekirjutamist. Kui lähtefaili pole, pole ka midagi varundada. Ära käsitle muid lugemis- või õigusevigu tõendina faili puudumisest.
Bashi põhiseadistus
Lisa faili ~/.bashrc ainult read, mida seal veel samaväärsel kujul pole:
HISTSIZE=5000
HISTFILESIZE=10000
HISTCONTROL=ignoredups
shopt -s histappend
PS1='\u@\h:\w\$ '
HISTSIZE piirab mälus hoitavat ajalugu, HISTFILESIZE ajaloofaili suurust. ignoredups väldib vahetult korduvaid kirjeid ning histappend lisab shelli lõppedes ajaloo faili senist sisu asendamata.
Kui kasutad Bashi sisselogimisshellina ja sinu profiil veel .bashrc-d ei laadi, lisa olemasoleva ~/.bash_profile lõppu:
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
See kontrollib faili olemasolu ja loeb selle praegusesse shelli. Ära kustuta profiilist muid käivituseks vajalikke ridu.
zsh põhiseadistus
Lisa faili ~/.zshrc:
HISTFILE="$HOME/.zsh_history"
HISTSIZE=5000
SAVEHIST=5000
setopt APPEND_HISTORY
setopt HIST_IGNORE_DUPS
PROMPT='%n@%m:%~%# '
SAVEHIST määrab faili salvestatavate ajalookirjete arvu. Viibas tähendavad %n kasutajat, %m arvutinime, %~ lühendatud tööteed ja %# õigustele vastavat lõpumärki.
Kui tahad eraldi terminalide ajalugu jooksvalt jagada, lisa setopt SHARE_HISTORY. See muudab ka seda, millised käsud ülesnoolega ette tulevad; alguses pole seda vaja.
Ühised lühikäsud
Järgmine plokk sobib nii Bashi kui ka zsh interaktiivsesse seadistusfaili:
alias ll='ls -lh'
alias la='ls -la'
alias ..='cd ..'
alias h='history | tail -n 20'
alias dus='du -k -d 1 . | sort -nr'
alias biggest='du -ak . | sort -nr | head -n 10'
export EDITOR=nano
export LESS='-R'
dus näitab Linuxis ja macOS-is kataloogide mahte ühe taseme kaupa; biggest otsib kogu puust. Mõlemad kaasavad peidetud kataloogid ega peida lugemisvigu. du -d puudumisel kasuta biggest-i.
EDITOR annab seda järgivatele programmidele redaktori eelistuse; vali ainult masinas olemasolev redaktor. LESS=-R lubab lehitsejal kuvada toetatud värvikoode, mitte kõiki terminali juhtkoode.
Valikuliselt võid lisada kinnitust küsivad aliased:
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'
Need on mugavus, mitte varukoopia ega üldine turvagarantii. Alias ei kehti igas skriptis, selle saab vahele jätta ning teised valikud võivad käitumist muuta.
Oma programmide otsingutee
PATH sisaldab katalooge, kust shell programme otsib. Ära asenda tervet väärtust ühe kataloogiga.
Bashis lisa olemasolev ~/bin üks kord:
if [ -d "$HOME/bin" ]; then
case ":$PATH:" in
*":$HOME/bin:"*) ;;
*) PATH="$HOME/bin:$PATH" ;;
esac
fi
export PATH
case valib mustri järgi haru: esimene ei tee midagi, kui tee juba esineb, teine lisab selle ette.
zsh-s on path massiiv seotud muutujaga PATH; typeset -U eemaldab korduvad kirjed:
typeset -U path
if [ -d "$HOME/bin" ]; then
path=("$HOME/bin" "${path[@]}")
fi
export PATH
Kataloogi ette lisamine annab selle programmidele eelisjärjekorra. Ära lisa PATH-i juhuslikku allalaadimiste kataloogi.
Arendaja valikulised lisad
Lisa ainult kasutatavate tööriistade lühikäsud:
alias gs='git status --short'
alias gd='git diff'
alias gdc='git diff --cached'
alias gl='git log --oneline --decorate -10'
alias venv='python3 -m venv .venv'
alias va='source .venv/bin/activate'
alias dc='docker compose'
alias json='python3 -m json.tool'
alias serve='python3 -m http.server --bind 127.0.0.1 8000'
serve jagab praeguse kataloogi sisu ainult selle arvuti kaudu. Käivita see katsekataloogis, mitte seal, kus hoiad saladusi. Lõpeta Ctrl-c-ga.
mkcd ühendab kataloogi loomise ja sinna liikumise. Järgmine funktsioon nõuab täpselt üht argumenti; && väldib liikumist, kui loomine ebaõnnestus:
mkcd() {
if [ "$#" -ne 1 ]; then
printf 'Kasutus: mkcd kataloog\n' >&2
return 2
fi
mkdir -p "$1" && cd "$1"
}
Funktsiooni kasutatakse näiteks mkcd "$HOME/tmp/uus projekt". return lõpetab funktsiooni, mitte kogu shelli.
Kontroll ja taastamine
Kontrolli oma shelli faili süntaksit enne selle sisselugemist:
bash -n ~/.bashrc
zsh puhul:
zsh -n ~/.zshrc
Vaikne tulemus tähendab, et süntaksiviga ei leitud, mitte seda, et kõik käsud on ohutud. Seejärel loe õige fail sisse: source ~/.bashrc või source ~/.zshrc. source käivitab faili sisu praeguses shellis.
Kui seadistus rikub töö, käivita bash --noprofile --norc või zsh -f. zsh loeb ka sel juhul süsteemi zshenv-faili, kuid jätab kasutaja tavalise interaktiivse seadistuse vahele. Paranda fail redaktoris või taasta ainult oma shelli varukoopia, näiteks cp -i ~/.zshrc.backup ~/.zshrc. Uus tavaline terminaliaken loeb vigase seadistuse uuesti, seega pelgalt uue akna avamine ei pruugi aidata.
Minitest
- Võrdle
ps -p $$jaecho "$SHELL"vastust. Kas need peavad kattuma? - Varunda oma seadistus ja lisa üks alias; kontrolli süntaksit ning proovi aliast.
- Miks ei piisa käsu
rmmuutmisest kinnitust küsivaks aliasena? - Kuidas pääsed shelli, kui sinu interaktiivses seadistusfailis on viga?
Peatüki täisspikker
Referents
Eesmärk
Hoia üks baasprofiil oma shellile ja lisa ainult vajalikke aliaseid või funktsioone.
Käsud ja näited
ps -p $kontrolli praegu töötavat shellicp -i ~/.zshrc ~/.zshrc.varutee olemasolevast failist varu; ära kirjuta varu pimesi ülezsh -n ~/.zshrckontrolli zsh süntaksit ilma käivitamatabash -n ~/.bashrckontrolli Bashi süntaksit ilma käivitamatasource ~/.zshrckäivita muudetud zsh seadistus praeguses shelliszsh -fava zsh kasutaja rc-faile lugematabash --noprofile --norcava Bash profiile lugemata
Märgid ja valikud
~/.zshrcinteraktiivse zsh seadistus~/.bashrcinteraktiivse mitte-login Bashi seadistus~/.bash_profilelogin-Bash; võib laadida .bashrcPATHprogrammide otsinguteed; järjekord loeb