• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

Übergabe von Argumenten ohne Terminal

chimpo

Gala
Registriert
25.04.09
Beiträge
50
Hallo,

Anlass dieses Postings: Der ProfileManager von Mozilla. Erst heute habe ich mitbekommen, dass er für mehrere Mozilla-Anwendungen funktioniert. Standard ist Firefox, doch bei Übergabe des Arguments "thunderbird" geht's auch für diesen.

Übergabe mit Terminal geht auch wunderbar, aber dann habe ich wenig gewonnen, denn dann kann ich auch den eingebauten im Thunderbird nutzen - da muss ich auch ins Terminal. Nachteil: umständlich

Also habe ich mir überlegt, mir ein Programm mit Automator zu bauen, das eben genau den Terminal-Befehl ausführt. Klappt auch. AppleScript wäre natürlich genauso möglich. Nachteil: Ein Umbennen oder Verschieben des Urspungs-Programms würde die Automator-Anwendung wertlos machen

Dann fand ich im Netz: Die eigentliche ausführbare Datei im Ordner MacOS umbenennen, eine weitere mit dem alten Namen und als Inhalt dem Aufruf der anderen Datei anlegen und ausführbar machen. Nachteil: wie gerade ist Verschieben und Umbenennen nicht mehr möglich

Daher die Frage: Gibt es einen Weg, das Programm in sich so zu verändern, dass all dies eben nicht passiert? Oder muss man dann wirklich in die Tiefen der Programmierung einsteigen? Irgendwo fand ich was von der info.plist, wo man angeblich Argumente übergeben können soll, aber das scheint nicht zu stimmen. So etwas in der Richtung wäre natürlich nett, aber offensichtlich geht's nicht so einfach...
 
Es stellt sich die Frage, warum du deine Programme unbedingt umbenennen oder verschieben willst.
 
Code:
osascript -e 'tell app "Finder" to quit'
app="/Applications/Pups App.app/Contents/MacOS/pupsapp"
mv "${app}" "${app}_original"
echo '#!/bin/bash' >> "${app}"
echo ' "${0}_original" --myoptions ' >> "${app}"
chmod a+x "${app}"
open /
 
@MacAlzenau: Ich habe mal gelernt, dass man bei solchen Dingen möglichst immer auf alle Eventualitäten gefasst sein soll und somit nie mit "hart verdrahteten" Pfaden arbeitet. Ist ja mehr 'ne Frage aus Interesse. Ich kann auch ohne leben mit genau den Möglichkeiten.

@Rastafari: Auch da wird die Variable mit eben einem kompletten Pfad festgelegt. Dann ist die Automator-Variante einfacher mit einem "open"-Befehl... Aber danke für die Mühe :-)
 
Da wird überhaupt nichts festgelegt. "${0}" wird erst zur Laufzeit aufgelöst. Aber danke für die hyperliquide Belehrung.
 
Dann verstehe ich wirklich was nicht - was ist denn mit der Variable "app"? Ohne die, die ja klar in der zweiten Zeile festgelegt wird, geht doch da gar nix, oder?
 
Ich nehme mal an, du brauchst sowas nur für ein einziges und ganz bestimmtes Programm und nicht für alle, oder?
 
Ich habe mal gelernt, dass man bei solchen Dingen möglichst immer auf alle Eventualitäten gefasst sein soll und somit nie mit "hart verdrahteten" Pfaden arbeitet.
Ist klar, die flexible Lösung ist natürlich immer eleganter.
Hätte ja auch sein können, daß es sich um irgendeinen speziellen Fall handelt.
 
Sorry, hätte das wohl klarer machen sollen: Die Frage war aus Neugierde gestellt um grundsätzlich zu wissen, ob das geht. Ich habe ja deutlich gemacht, dass ich Lösungen habe, die auch funktionieren. War ganz allgemein "out of curiosity" gefragt, ob das einfach zu machen ist oder eben nicht. Ein "nein" ist dann natürlich eine legitime Antwort.

Der konkrete Fall ist noch eine Beta-Version - also ist die Frage, wie's in der endgültigen Version ist. Daher ist der konkrete Fall kein Maßstab.