Linux 14.928 Themen, 105.575 Beiträge

Bash-Script

Acikgoez Birol / 3 Antworten / Baumansicht Nickles

Hi!
Ich versuche anhand eines Bash-Scriptes,
was ich in Fvwm2 integriert habe,beim
Start des Scriptes in einem bestimmten
Verzeichnis mit cd /boot/etc usw. zu landen.
Leider Klappt es nicht,ich lande immer im root Verzeichnis.
Wer kann mir da weiter helfen.
PS. Ich habe mich schon als root eingeloggt!
(Acikgoez Birol)

Antwort:
es könnte helfen, Du würdest das Skript (oder relevante Teile davon) hier posten.
Wenn Dein Sript letztendlich so aussieht
#/bin/sh
cd /irgendwohin
klappt es nicht. Da dieses Skript eine neue Shell startet, in dieser das Verzeichniss wechselt, und dann diese neue Shell wieder beendet.
(jay)

Antwort:
Hi!
Mein Script ist eigentlich ganz simpel.
Nehmen wir mal an ich habe einen Script wie unten in FVWM2 eingebettet
und möchte per Icon-Klick einen X-Term im POVRAY Verzeichnis starten.
Mein Script würde so aussehen.:
" echo Willkommen zu POVRAY für LINUX
echo ******************************
cd /work/povray31e/povscn " X-Term wird gestartet,
Die echo Befehle werden ganz normal abgearbeitet,und dann lande ich
im root Verzeichnis.
Die Einbettung im FVWM2 erfolgt so:
+ "POVRAY31e%small.raytracing.xpm%" exec xterm -e meinscript
Kann jemad das erklären?
Danke für jede Hilfe.
(Acikgoez Birol)

Antwort:
Das ist ein echter Hirnwindungszermürber :)
Also Erklärung:
"exec xterm -e script" startet ein Xterm, dieses startet eine Shell um das Skript auszuführen.
Die shell führt den Echo befehl aus: Das Resultat landet im Xterm Fenster.
Jetzt wechselt die Shell das Verzeichniss. Davon siehst Du nix, es sei denn es tritt ein Fehler auf, dann würdest Du die Fehlermeldung sehen.
Das Skript ist zuende, die Shell hat ihre Schuldigkeit getan und terminiert.
Resultat, Du hast ein Xterm mit einem Echo Output aber keinem gewechseltem Verzeichniss...
Lösung: keine die mich zufriedenstellen wuerde...man könnte einen Aufruf der Form
exec xterm -e bash -i -rcfile script.sh
machen, und in script.sh zunächst .bashrc aufrufen, wenn es vorhanden ist, aber das ist irgendwie zu komplex fuer eine so einfache Aufgabe...
j.
(jay)

bei Antwort benachrichtigen
jay Acikgoez Birol

„Bash-Script“

Optionen

es könnte helfen, Du würdest das Skript (oder relevante Teile davon) hier posten.
Wenn Dein Sript letztendlich so aussieht
#/bin/sh
cd /irgendwohin
klappt es nicht. Da dieses Skript eine neue Shell startet, in dieser das Verzeichniss wechselt, und dann diese neue Shell wieder beendet.
(jay)

bei Antwort benachrichtigen
Acikgoez Birol jay

„Bash-Script“

Optionen

Hi!
Mein Script ist eigentlich ganz simpel.
Nehmen wir mal an ich habe einen Script wie unten in FVWM2 eingebettet
und möchte per Icon-Klick einen X-Term im POVRAY Verzeichnis starten.
Mein Script würde so aussehen.:
" echo Willkommen zu POVRAY für LINUX
echo ******************************
cd /work/povray31e/povscn " X-Term wird gestartet,
Die echo Befehle werden ganz normal abgearbeitet,und dann lande ich
im root Verzeichnis.
Die Einbettung im FVWM2 erfolgt so:
+ "POVRAY31e%small.raytracing.xpm%" exec xterm -e meinscript
Kann jemad das erklären?
Danke für jede Hilfe.
(Acikgoez Birol)

bei Antwort benachrichtigen
jay Acikgoez Birol

„Bash-Script“

Optionen

Das ist ein echter Hirnwindungszermürber :)
Also Erklärung:
"exec xterm -e script" startet ein Xterm, dieses startet eine Shell um das Skript auszuführen.
Die shell führt den Echo befehl aus: Das Resultat landet im Xterm Fenster.
Jetzt wechselt die Shell das Verzeichniss. Davon siehst Du nix, es sei denn es tritt ein Fehler auf, dann würdest Du die Fehlermeldung sehen.
Das Skript ist zuende, die Shell hat ihre Schuldigkeit getan und terminiert.
Resultat, Du hast ein Xterm mit einem Echo Output aber keinem gewechseltem Verzeichniss...
Lösung: keine die mich zufriedenstellen wuerde...man könnte einen Aufruf der Form
exec xterm -e bash -i -rcfile script.sh
machen, und in script.sh zunächst .bashrc aufrufen, wenn es vorhanden ist, aber das ist irgendwie zu komplex fuer eine so einfache Aufgabe...
j.
(jay)

bei Antwort benachrichtigen