Kenneth Ahn Jensen wrote:
Hep
Jeg vil gerne have at mit bash-script opnår en smule selvbevidsthed.
Når jeg kører scriptet skal det gerne kunne finde ud af hvor det
ligger henne, fordi der så skal gøres noget relativt til dette katalog.
Hvordan finder jeg ud af det?
$0 giver mig jo bare det "navn" som scriptet er startet med, så det
kan være /home/user/bin/script.sh eller ./script.sh (eller endnu værre
../../bin/script.sh ).
Det vil selvfølgelig altid være den relative sti til hvor min CWD er,
men jeg ville gerne kunne finde den absolutte, uden at skulle
konkatenere $CWD med $0 og dermed kunne få
/home/user/some/path/../../bin/script.sh).
Nogen forslag?
Det er nogle fantastisk snedige og indviklede metoder, der er forslået i
denne tråd.
Der er kun én rimelig måde at gøre det på.
Private ekserkverbare filer, det være sig bashscripts eller andre typer,
samles i ét directory, f.eks. /home/user/bin. Denne sti skal inkluderes
i environment variablen PATH.
Det gøres sådan:
I filen /home/user/.bashrc tilføjes: export PATH=$PATH:/home/user/bin
For at det kan virke straks skal man bruge kommandoen 'source .bashrc' ,
og så vil det iøvrigt virke hver gang man logger ind, eller åbner en ny
Xterminal.
Prøv dette testscript:
testsh:
#!/bin/sh
echo $0
Lav cd til et vilkårligt directory,
tast testsh
Og voila: du vil se udskriften /home/user/bin/testsh