Overgang fra tcsh til bash
Bash har overtatt som standard shell. Ved normal bruk av kommandolinjen vil en knapt merke forskjell mellom de to shellene, men ved mer avansert bruk er det nødvendig å være oppmerksom på forskjellene. Teksten nedenfor tar for seg forskjeller mellom bash og tcsh, men nesten alt som gjelder for tcsh vil også gjelde for csh.
Oppstartsfiler
Bash vil lese .bash_profile i hjemmekatalogen din hvis den finnes. Vanligvis vil .bash_profile inneholde følgende kode:
if [ -f ~/.bashrc ]; then . ~/.bashrc export BASH_ENV=$HOME/.bashrc fiMed denne kodebiten på plass i .bash_profile, vil .bashrc tilsvare .cshrc for tcsh, mens .bash_profile tilsvarer .login for tcsh.
Default oppstartsfiler finnes i katalogen /etc/skel.
Merk at Oppstartsfilene er «skjulte» filer som ikke vises ved vanlig fillisting.
Bruk opsjon -A til ls eller velg «Show hidden files» i preferences til File manager.
Filnavnskomplettering
Tcsh: filnavn kompletteres med TAB, alternativer vises med CTRL-D
Bash: filnavn kompletteres med TAB, alternativer vises med TAB-TAB
Bash har muligheten til mer avansert filnavnskomplettering. Du kan f.eks legge følgende inn i .bashrc
complete -A directory cd rmdirDette forteller bash at cd og rmdir er kommandoer som skal ha kataloger som argument, og at filnavnskompletteringen bare skal gå mot katalognavn. Se manualsiden til bash for flere detaljer.
Variabler
Tcsh opererer med to typer variabler, shellvariabler og miljøvariabler. Miljøvariabler arves av prosesser du starter fra shellet, mens shellvariablene ikke går i arv. Bash har bare en variabeltype, men du kan flagge at en variabel skal arves som en miljøvariabel med export.
Shellvariabler:
Tcsh: set variabel = verdi
Bash: variabel=verdi
Merk, ingen mellomrom rundt likhetstegnet når en bruker bash.
Miljøvariabler:
Tcsh: setenv VARIABEL verdi
Bash: export VARIABEL=verdi
Aliaser
Når du definerer aliaser i bash, må du ha med et likhetstegn, eksempel:Tcsh:
alias .. "cd .."Bash:
alias ..="cd .."Merk, ingen mellomrom rundt likhetstegnet.
En kan ikke bruke argumenter til alias i bash, men en kan bruke shell funksjoner for å gjøre det samme (og mer). Disse legges inn i .bashrc som du ville gjort med et alias.
Eksempel .bashrc fil:
# .bashrc# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
# siste argument: ${!#} første argument: $1 function map() { cat ${!#} | maple -e -f $1 - }
# alle argumenter settes inn ved
$*function dvi() { xdvi -noghostscript -paper a4 -expert -keep $* & }alias ll="ls -l" alias ltr="ls -ltr"
Variabler som styrer shellets oppførsel
Noclobber
Noclobber angir at du ikke skal overskrive eksisterende filer ved redirigering. I tcsh setter du noclobber slik:set noclobbermens du setter den slik i bash:
set -o noclobber
Noclobber kan overstyres, men det gjøres ulikt i tcsh og bash
Tcsh: kommando >! filnavn
Bash: kommando >| filnavn
Ignoreeof
Ignoreeof angir at shellet ikke skal avsluttes når du trykker CTRL-D (end of file). I tcsh setter du ignoreeof slik:set ignoreeofmens du setter ignoreeof slik i bash:
set -o ignoreeof
Flytkontroll
All flytkontroll (if-setninger, for-løkker osv) kodes ulikt i tcsh og bash. Se man-sidene for detaljer.
Shellscript
Ved overgang fra tcsh til bash kan noen shellscript slutte å virke. Dette gjelder script som begynner med en # (firkant), men ikke de som begynner med #! (firkant utropstegn). Script som bare begynner med en # (firkant) må rettes slik at de begynner med:
#!/bin/tcsh