Winfried Mueller | 15 Oct 14:30
Picon
Picon

Environmentvariable PWD setzen

Hallo zusammen,

ich wollte ein Backup-Skript für einen Linux-Server in ruby
schreiben. So ganz verstehe ich dabei die Sache mit den
Environmentvariablen nicht.

Wenn ich bspw. ein
`tar -xcvf /home/backup/mybackupfile.tar *`

in ruby aufrufe, dann beginnt tar ja im aktuellen Verzeichnis
(PWD). Wenn ich das aber ändern möchte, dachte ich, müßte es so
gehen:

ENV["PWD"]="/var"
`tar -xcvf /home/backup/mybackupfile.tar *`

Das funktioniert aber nicht, tar nimmt trotzdem den Pfad, der
beim Start von Ruby der Aktuelle war. Perl tut das im übrigen
genauso. 

Natürlich könnte ich schreiben:

`cd /var; tar -xcvf /home/backup/mybackupfile.tar *`

Mir geht es aber genereller um die Frage, wie ich
Environmentvariablen setzen kann, die dann auch von aufgerufenen
Programmen im ruby-skript auch übernommen werden. Man hat ja
öfters mal Befehle, die relativ zum aktuellen Pfad irgendwas tun.
Und da möchte ich die Möglichkeit haben, diesen einzustellen.

(Continue reading)

Oliver Mensinger | 15 Oct 14:46
Picon

Re: Environmentvariable PWD setzen

Hallo Winfried,

relative Pfade sind meistens problematisch. Ich habe mir irgendwann einmal
angewoehnt nur noch konfigurierbare, absolute, Pfade zu verwenden.

Verlange beim Starten des Programmes einfach einen Parameter fuer das Backup
Zielverzeichnis, oder verwende eine Konfigurationsdatei!

HTH, Oliver.

On Tue, 15 Oct 2002, Winfried Mueller wrote:

>Hallo zusammen,
>
>ich wollte ein Backup-Skript für einen Linux-Server in ruby
>schreiben. So ganz verstehe ich dabei die Sache mit den
>Environmentvariablen nicht.
>
>Wenn ich bspw. ein
>`tar -xcvf /home/backup/mybackupfile.tar *`
>
>in ruby aufrufe, dann beginnt tar ja im aktuellen Verzeichnis
>(PWD). Wenn ich das aber ändern möchte, dachte ich, müßte es so
>gehen:
>
>ENV["PWD"]="/var"
>`tar -xcvf /home/backup/mybackupfile.tar *`
>
>Das funktioniert aber nicht, tar nimmt trotzdem den Pfad, der
>beim Start von Ruby der Aktuelle war. Perl tut das im übrigen
(Continue reading)

Pit Capitain | 15 Oct 20:12
Picon

Re: Environmentvariable PWD setzen

Hallo Winfried,

vielleicht hilft dir bei deinem konkreten Problem "Dir.chdir" weiter. 
Damit kannst du das aktuelle Verzeichnis zur Laufzeit ändern.

Gruß,
Pit

On 15 Oct 2002, at 14:30, Winfried Mueller wrote:

> Hallo zusammen,
> 
> ich wollte ein Backup-Skript für einen Linux-Server in ruby
> schreiben. So ganz verstehe ich dabei die Sache mit den
> Environmentvariablen nicht.
> 
> Wenn ich bspw. ein
> `tar -xcvf /home/backup/mybackupfile.tar *`
> 
> in ruby aufrufe, dann beginnt tar ja im aktuellen Verzeichnis
> (PWD). Wenn ich das aber ändern möchte, dachte ich, müßte es so
> gehen:
> 
> ENV["PWD"]="/var"
> `tar -xcvf /home/backup/mybackupfile.tar *`
> 
> Das funktioniert aber nicht, tar nimmt trotzdem den Pfad, der
> beim Start von Ruby der Aktuelle war. Perl tut das im übrigen
> genauso. 
> 
(Continue reading)

Clemens Fischer | 15 Oct 21:29
Picon

Re: Environmentvariable PWD setzen

Winfried Mueller <ToWinni <at> gmx.de>:

> `tar -xcvf /home/backup/mybackupfile.tar *`

studiere doch mal die man-page deines tar's.  moderne tar's haben alle
einen parameter

 -C directory
 --directory directory   Change to directory before processing the
                         remaining arguments.

das `*'chen brauchst du nicht, wenn du alles extrahieren willst, aber
vielleicht willst du ja ein `j' oder ein `z' beim erstellen und
extrahieren hinzufuegen, um das archiv zu komprimieren.

ausserdem moechte ich vor dem verwenden absoluter filenamen in
archiven generell warnen.  der poster hat vielleicht nicht bedacht,
was passiert, wenn man einen backup mal wirklich braucht und
zurueckspielen muss.  meistens ist ja vorher eine platte
durchgeknallt, und man hat eine ersatzplatte gemounted.  jetzt stimmen
alle pfade nicht mehr.  wenn absolute pfade zurueckgespielt werden,
kann ungeheures passieren!  im vergleich ist ein `chdir' vorher
billiger.  das koennte auch fuer dich eine loesung sein, denn chdir
muesste doch zur verfuegung stehen und das CWD des ruby-interpreters
wechseln.

clemens
Clemens Fischer | 15 Oct 21:44
Picon

Re: Environmentvariable PWD setzen

"Pit Capitain" <pit <at> capitain.de>:

'tschuldige, ich wollte bloss mal fragen, ob du den herrn
p. heggemeier, der zeit hamburg, kennst.  dann wuerde mein name dir
sicher auch was sagen.  wenn nicht, vergiss' diese email, dann habbich
dich mit jemandem verwechselt :)

gruss,

clemens
Clemens Fischer | 15 Oct 22:44
Picon

Re: Environmentvariable PWD setzen

"Clemens Fischer" <ino-waiting <at> gmx.net>:

> 'tschuldige, ich wollte bloss mal fragen, ob du den herrn

i am very sorry for this error.  i hit the wrong key.

clemens
Clemens Fischer | 15 Oct 22:47
Picon

Re: Environmentvariable PWD setzen

"Clemens Fischer" <ino-waiting <at> gmx.net>:

> 'tschuldige, ich wollte bloss mal fragen, ob du den herrn

ich habe gerade rausgefunden, dass ruby-de auch der unsitte erliegt,
einen mandatory Reply-To zu setzen.  dann habe also nicht unbedingt
ich die falsche taste gedrueckt.  wer ist eigentlich administrator
dieser liste?  kannst du diesen unfug nicht abstellen?  es gibt
tatsaechlich mailer, die sich nach den headern einer email und den
ueblichen gepflogenheiten richten!

clemens
Pit Capitain | 16 Oct 00:21
Picon

Re: Environmentvariable PWD setzen

Hallo Clemens,

nein, weder du noch Herr Heggemeier ist mir ein Begriff. Muss wohl 
doch eine Verwechslung sein, obwohl mein Name ja nicht so 
häufig vorkommt.

Gruß,
Pit

On 15 Oct 2002, at 21:44, Clemens Fischer wrote:

> "Pit Capitain" <pit <at> capitain.de>:
> 
> 'tschuldige, ich wollte bloss mal fragen, ob du den herrn
> p. heggemeier, der zeit hamburg, kennst.  dann wuerde mein name dir
> sicher auch was sagen.  wenn nicht, vergiss' diese email, dann habbich
> dich mit jemandem verwechselt :)
> 
> gruss,
> 
> clemens
> _______________________________________________
> ruby-de mailing list
> ruby-de <at> bttr.org
> http://lists.bttr.org/mailman/listinfo/ruby-de
Winfried Mueller | 16 Oct 14:04
Picon
Picon

Re: Environmentvariable PWD setzen

Hallo,

habt vielen Dank für die schnelle Hilfe.

Noch ein paar Anmerkungen:

- mit dem changedir direkt bei tar: Das ist im Grunde eine gute
Lösung, die ich in meinem Fall auch tun kann. Leider hatte ich
aber auch eine Minidistribution (tomsrtbt Notdisk), wo dieses tar
das nicht kann. Von daher war mir immer etwas unwohl, diese
Lösung zu wählen, aus Kompatibilitätsgründen. 

- dir.chdir ist genau das, was ich gesucht habe, hab das
irgendwie in der Doku übersehen.

- danke auch noch für die Hinweise absolute/relative Pfade. Ich
muß mir da auch nochmal meine Gedanken machen, wie ich damit
umgehe.

viele Grüße

Winfried
dblack | 16 Oct 16:03

Re: Environmentvariable PWD setzen

Hello --

On Wed, 16 Oct 2002, Winfried Mueller wrote:

> - dir.chdir ist genau das, was ich gesucht habe, hab das
> irgendwie in der Doku übersehen.

Ab 1.7 gewinnt Dir.chdir übrigens Block-fähigkeiten:

  candle:~$ ruby -e 'Dir.chdir("/tmp") { p Dir.pwd }; p Dir.pwd'
  "/tmp"
  "/home/dblack"

(ruby 1.7.3 (2002-10-12) [i686-linux])

David

--

-- 
David Alan Black
home: dblack <at> candle.superlink.net
work: blackdav <at> shu.edu
Web:  http://pirate.shu.edu/~blackdav

Gmane