• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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...
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.522
Es stellt sich die Frage, warum du deine Programme unbedingt umbenennen oder verschieben willst.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
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 /
 

chimpo

Gala
Registriert
25.04.09
Beiträge
50
@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 :)
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Da wird überhaupt nichts festgelegt. "${0}" wird erst zur Laufzeit aufgelöst. Aber danke für die hyperliquide Belehrung.
 

chimpo

Gala
Registriert
25.04.09
Beiträge
50
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?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Ich nehme mal an, du brauchst sowas nur für ein einziges und ganz bestimmtes Programm und nicht für alle, oder?
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.522
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.
 

chimpo

Gala
Registriert
25.04.09
Beiträge
50
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.