← Back to team overview

sslug-teknik team mailing list archive

Re: Finde stien til et shellscript

 

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

--
Med venlig hilsen

Jørgen Heesche
mailto:heesche@xxxxxxxxxxx
Registered Linux User #401007


Follow ups

References