InformatikkBash   edit print

Hjem

Rom
- DataSaler
- Auditorier

Teknisk
- Linux
- Windows
- Sikkerhet
- Driftslogg

Avdelinger med info
- IFT
- Informatikk
- UB

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
fi
Med 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 rmdir
Dette 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 noclobber
mens 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 ignoreeof
mens 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