cd script
Jeg har været lidt i gang med noget bash-programmering, men kan ikke helt forstå hvorfor det ikke helt virker efter hensigten..
Jeg vil lave sådan at jeg kan taste "devel file" og det directory jeg står i skiftes så til file-mappen.
#!/bin/bash -x
if [ -z "$1" ]
then
cd /home/web/devel.thebowler.dk
pwd
elif [ -d "/home/web/devel.thebowler.dk/$1.thebowler.dk/docs" ]
then
cd /home/web/devel.thebowler.dk/$1.thebowler.dk/docs/
pwd
else
echo "WOOPS! Sorry but I can't find $1.."
fi
Som I kan se, har jeg lagt lidt debugging på, hvor jeg får følgende:
[dbr@thebowler ~]$ devel
+ '[' -z '' ']'
+ cd /home/web/devel.thebowler.dk
+ pwd
/home/web/devel.thebowler.dk
[dbr@thebowler ~]$ devel file
+ '[' -z file ']'
+ '[' -d /home/web/devel.thebowler.dk/file.thebowler.dk/docs ']'
+ cd /home/web/devel.thebowler.dk/file.thebowler.dk/docs/
+ pwd
/home/web/devel.thebowler.dk/file.thebowler.dk/docs
[dbr@thebowler ~]$
Problemet er lidt at, som jeg ser det, skiftes directory rigtigt nok, men jeg forbliver ikke i det nye directory. Eller også sker 'ændringen' af directoryet internt under afviklingen..
- Log in to post comments
Kommentarer8
.
.
Re: cd script
Jeg fik så min frygt bekræftet - det er præcis det der sker..
Det hjælper ikke uden #!/bin/bash
Filen ligger i /home/dbr/bin hvor min mening egentligt var at have et globalt tilgængeligt (for mig) kommando.
Ville det være bedre at benytte: function devel {} i .bash_profile?
Re: Re: cd script
Hvis du skriver "source" foran din kommando skulle jeg mene at den ikke opretter en ny shell til eksekvering eller alle modifilkationer dit script gør bliver i hvert fald overført til din nuværende shell.
Jeg er ikke helt sikker og jeg kunne ikke lige finde man pages til source så det er udelukkende fra hukommelsen.
.
.
Re: cd script
Så så længe man programmere i 'særskildte' filer, eksekveres det i særskildt shell?
.
.
Re: Re: cd script
Som denmagisketangopirat skriver kan du skrive source foran dit script,
du kan også nøjes med et .
eksempl source
source devel file
eksempel .
. devel file
Begge medtoder vil eksekvere dit script uden at indlæse et nyt enverioment
.
.