[Solaris] Working directory van .sh-script

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 16-08 21:48

TheLunatic

Ouwe boxen.

Topicstarter
Het is lastig om zinnig te Googlen voor dit probleem. Het probleem is als volgt.

Ik heb een shellscript (/foo/shellscript.sh) wat een configuratiebestand source't wat een directory hoger staat:

code:
1
source ../config.sh


Werkt prima als ik het shellscript start vanuit /foo met commando ./shellscript.sh, maar niet als ik het draai vanuit /usr/bar met het commando /foo/shellscript.sh, want dan resolve't het relatieve path naar /usr/config.sh en dat bestaat uiteraard niet.

In Windows bestaat er zoiets als "run in". Bestaat zoiets ook in Solaris? Een parameter waarmee ik de working directory kan veranderen bijvoorbeeld?

Mother, will they like this song?


Acties:
  • 0 Henk 'm!

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

In $0 staat de naam van het script zelf. In combinatie met $CWD zou je hiermee de locatie van het script moeten kunnen bepalen.

Acties:
  • 0 Henk 'm!

  • w.l
  • Registratie: Mei 2007
  • Laatst online: 31-05 23:40

w.l

code:
1
pwd

Dat zou moeten werken. (zie ook hier)

Acties:
  • 0 Henk 'm!

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

pwd geeft de current working directory. Het probleem is juist dat het script ergens anders staat en een include probeert vanaf de current working directory, maar dat eigenlijk zou moeten doen vanaf de locatie van het script zelf.

Acties:
  • 0 Henk 'm!

  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Zoek je:
code:
1
dirname $0


?

We are pentium of borg. Division is futile. You will be approximated.


Acties:
  • 0 Henk 'm!

  • JohnR
  • Registratie: April 2003
  • Niet online

JohnR

Koffie is lekker!

Of je sourcet het bestand met een absolute padnaam
. /<path>/<to>/config.sh

/(bb|[^b]{2})/


Acties:
  • 0 Henk 'm!

  • JeroenE
  • Registratie: Januari 2001
  • Niet online
[b][message=35418515,noline]TheLunatic schreef op maandag 24 januari 2011 @
In Windows bestaat er zoiets als "run in". Bestaat zoiets ook in Solaris? Een parameter waarmee ik de working directory kan veranderen bijvoorbeeld?
Er bestaat geen "run in". De working directory kan je veranderen met "cd". Als je niet precies weet in welke dir je zit (maar blijkbaar wel dat de config.sh een directory hoger staat) dan doe een cd naar de juiste directory. Als je eerst de huidige directory onthoud kan je aan het eind van je script daar weer naar terug gaan.

iets als dit dus:
code:
1
2
3
4
5
6
7
#!/bin/sh
OLDPWD=`pwd`
echo We beginnen in $OLDPWD
cd $(dirname "$0")
echo Nu zijn we in de directory van het script: `pwd`
cd $OLDPWD
echo en nu weer terug waar we begonnen

[ Voor 0% gewijzigd door JeroenE op 24-01-2011 11:52 . Reden: tikfautje ]


Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

JeroenE:
En wat als ik een soft-link leg naar jouw script en het dan uitvoer?

@TS:
De eigenlijke oplossing is dat config files niet naast je executable/script horen.
Beter is om je config in /etc te gooien en een absoluut pad te gebruiken. Ook voor security doe je jezelf er een plezier mee.

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 15:43

Kees

Serveradmin / BOFH / DoC
H!GHGuY schreef op maandag 24 januari 2011 @ 12:49:
JeroenE:
En wat als ik een soft-link leg naar jouw script en het dan uitvoer?
Nog afgezien van het feit dat het niet uitmaakt waar een script heen cd't, want na afloop krijg je je eigen shell weer terug met je eigen working directory.

Maargoed, een 'run in' zou je kunnen definieren als 'cd /directory' aan het begin van het script.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • JeroenE
  • Registratie: Januari 2001
  • Niet online
H!GHGuY schreef op maandag 24 januari 2011 @ 12:49:
JeroenE:
En wat als ik een soft-link leg naar jouw script en het dan uitvoer?
Ik kan nog wel meer andere dingen verzinnen wat je kan doen waardoor het niet meer werkt. Bijvoorbeeld als je (alleen) het scriptje verplaatst, de config.sh hernoemd en ga zo maar door.

Ik ken de verdere context niet dus ik was er van uitgegaan dat de TheLunatic wel een goede reden zou hebben om dit op deze manier te doen. In het algemeen ben ik het met je eens dat het vaak handiger is om bestanden die bij elkaar horen bij elkaar te bewaren.
Pagina: 1