Shell-Skript per Doppelklick ausführen

Variablen immer quoten, wenn Leerzeichen drin sind erkennt der das als zwei Dinge.

Absolute Pfade wären wirklich sehr viel einfacher. Oder zumindest vom Home aus

mv "~/pfad/zum/zeugs/*.aux" "$PWD"
 
Ich will dich nicht veräppeln, aber um hier ein gutes Resultat zu bekommen musst du vorher noch mal genau schildern, wo und wie du das Script dann startest.
Denn das Ausführen bedingt dann die Befehle, weil man bei solchen Scripten sonst nicht sicher ist, ob es richtig ist.
 
Ich will dich nicht veräppeln, aber um hier ein gutes Resultat zu bekommen musst du vorher noch mal genau schildern, wo und wie du das Script dann startest.
Denn das Ausführen bedingt dann die Befehle, weil man bei solchen Scripten sonst nicht sicher ist, ob es richtig ist.
Das freut mich!
OK, falls Infos fehlen ich meinte eigentlich alles erwähnt zu haben:

ich habe eine txt-Datei, diese hat zB den Inhalt
Code:
cd /Users/maName/Documents/Testordner
mv *gz Hilfsdateien
Sie soll also alle Dateien vom Typ gz in den (Unter-)Ordner Hilfsdateien verschieben.
Ich ersetze die Dateiendung txt durch sh. Dann mache ich chmod 755 aus der Datei eine ausführbare Datei. Dies klappt, der Doppelklick öffnet den Terminal und die Datei verschiebt alle gz-Dateien nach Users/maName/Documents/Testordner/Hilfsdateien.

Nun möchte ich diese Datei an verschieden Orten, also in verschiedenen Ordnern einsetzen. Dazu müsste ich jeden Mal "cd /Users/maName/Documents/Testordner" ersetzen durch den neuen Pfad. Das ist umständlich - es gibt hunderte solche Ordner, wo die Datei bereitliegen soll.
Nun suche ich einen Befehl, der den "Heimatort" der ausführbaren Datei als Pfad nimmt. cd $PWD macht es leider nicht.
 
Wenn die in dem Verzeichnis liegt wo die ausgeführt wird, dann braucht es kein cd.

Mach ein mal ein Script fertig wo nur
echo $PWD
drin steht.
Und starte dann das Script in verschiedenen Verzeichnissen.
 
Wenn die in dem Verzeichnis liegt wo die ausgeführt wird, dann braucht es kein cd.

Mach ein mal ein Script fertig wo nur
echo $PWD
drin steht.
Und starte dann das Script in verschiedenen Verzeichnissen.
Es kommt dann das hier
Code:
Last login: Sat Oct  7 19:42:31 on ttys001
maName@MacBook-Pro-von-maName ~ % /Users/maName/Public/Schule/URNachJhrgUThemen/PhysikmaName/PhyQ1Q2/PhyQ2/Q2QM/URQM/InterferometerUKnallertest/TerminalLoeschenAUXuLOGuGZ\ Kopie\ 2.sh ; exit;

/Users/maName

Saving session...

...copying shared history...

...saving history...truncating history files...

...completed.

[Prozess beendet]

Zur Sicherheit: In meiner Datei steht:
Code:
echo $PWD
sonst nix
 
Ja, mein Fehler.
Du brauchst
cd "$(dirname "$0")"
echo $PWD

Zu Erklärung:
$0 ist der Scriptpfad
dirname kürzt dann das script.sh raus
 
  • Gefällt mir
Reaktionen: Lorzel
Eine weitere Frage dazu - ich habe auf meinem Mac einen weiteren Benutzer. Der soll das Skript auch ausführen dürfen. Die Dateien liegen unter Öffentlich/Public, dh der Zugriff darauf ist an sich kein Problem. Jedoch wird beim Zugriff über das andere Benutzerkonto nix gelöscht, wenn man das Skript doppelklickt.
Was mir auffällt: Wenn man das Skript ausführt, so steht im Terminal als Pfad immer noch mein Benutzername und nicht der des anderen Nutzers. Liegt es daran dass ich der Administrator bin? Und kann man das irgendwie ändern, dass auch der Gast mit dem Skript Ordner säubern kann?
 
Zuletzt bearbeitet:
Nachtrag:
Es ist ein Irrtum - das Skript funktioniert in dem einen Ordner bei allen Nutzer nicht.
Eine der zu löschenden log-Dateien muss einen Fehler gehabt haben, sodass der Terminal immer zuverlässig dort stecken bleibt. Nachdem ich die Datei von Hand gelöscht habe, funktioniert das Skript auch in diesem Ordner.
 
Zurück
Oben Unten