Beetaversioon: sisu on enamasti terviklik ja avalikuks katsetamiseks valmis, kuid vajab veel tehnilist, keelelist ja kasutatavuse kontrolli.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Lisa F: shelli seadistusfailid bash ja zsh jaoks, mis kuulub osasse Lisad.

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.

ShellInteraktiivse 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

  1. Võrdle ps -p $$ ja echo "$SHELL" vastust. Kas need peavad kattuma?
  2. Varunda oma seadistus ja lisa üks alias; kontrolli süntaksit ning proovi aliast.
  3. Miks ei piisa käsu rm muutmisest kinnitust küsivaks aliasena?
  4. 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 shelli
  • cp -i ~/.zshrc ~/.zshrc.varutee olemasolevast failist varu; ära kirjuta varu pimesi üle
  • zsh -n ~/.zshrckontrolli zsh süntaksit ilma käivitamata
  • bash -n ~/.bashrckontrolli Bashi süntaksit ilma käivitamata
  • source ~/.zshrckäivita muudetud zsh seadistus praeguses shellis
  • zsh -fava zsh kasutaja rc-faile lugemata
  • bash --noprofile --norcava Bash profiile lugemata

Märgid ja valikud

  • ~/.zshrcinteraktiivse zsh seadistus
  • ~/.bashrcinteraktiivse mitte-login Bashi seadistus
  • ~/.bash_profilelogin-Bash; võib laadida .bashrc
  • PATHprogrammide otsinguteed; järjekord loeb
Eelmine peatükkLisa E: usaldusväärsed viited ja lisalugemineJärgmine peatükkSee on praegu viimane peatükk selles reas.