Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
cd permanent in *.pl/*.sh

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
hubert
Gast





BeitragVerfasst am: 03. Apr 2002 16:29   Titel: cd permanent in *.pl/*.sh

problem:
wenn man in einem shell- oder perlskript das aktuelle verzeichnis ("cwd") aendert (cd), aendert das nur das cwd des aktuellen prozesses (also des skripts), aber nicht das cwd der aufrufenden shell. genau das will ich aber: mein skript soll in ein bestimmtes verzeichnis wechseln, und nach beenden des skripts soll die bash in diesem verzeichnis sein. als einzige moeglichkeit faellt mir ein, das skript zu "sourcen", aber geht es auch anders (eleganter)?
 

tj
Gast





BeitragVerfasst am: 04. Apr 2002 23:16   Titel: Re: cd permanent in *.pl/*.sh

Hi,

wenn ich dich richtig verstehe, dann willst du das Arbeitsverzeichnis des Elternprozesses deines
Skripts, also der shell aendern. Da weiss ich leider auch nichts wie man das erreichen koennte,
ausser vielleict ein C-Prog, dass dies mit 'getpid' usw. erreicht.
Aber eine (nicht so schoene) Loesung waere, die aktuelle Shell mit deinem Skript via 'exec' zu
ersetzen und am Ende des Skripts eine neue Shell zu erzeugen, also das Skript

-----------------------------
#!/bin/sh

......

cd ..
bash
------------------------

mit 'exec script.sh' aufzurufen. Wenn jemand eine elegantere Loesung hat wuerde mich
das auch interessieren

tj
 

hubert
Gast





BeitragVerfasst am: 05. Apr 2002 23:24   Titel: Re: cd permanent in *.pl/*.sh

Hallo tj,

danke fuer die idee, so muesste es gehen. aber eigentlich will ich die eltern-shell
ja unangetastet lassen (und nur deren cwd aendern).

eine andere moeglichkeit, die ich mir ueberlegt habe, waere:

im skript das neue cwd in einer env-var ablegen:
export NEUES_CWD="das neue verzeichnis"
dann ein alias:
alias meinsk='meinskript; cd $NEUES_CWD'
wenn das skript keinen anderweitigen output hätte, könnte man auch das neue cwd ausdrucken und dann:
alias meins='cd $(meinskript)'

aber so richtig elegant sind diese loesungen auch nicht: ich bin kein fan von
environment-variablen, und der umweg ueber den alias ist umstaendlich.

ich muesste mal suchen, ob es nicht in perl irgendeinen kniff gibt.
(wenn es selbst in perl nicht gehen sollte, kann ich ja gleich aufgeben
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy