Mac: Prozess wirklich von Terminal.app trennen

1

Unter Mac OS 10.6.6 möchte ich einen Bash-Alias ​​oder eine Bash-Funktion erstellen, mit der Google Chrome ausgeführt wird. Das Starten von Chrome ist ganz einfach: "/ Programme / Google Chrome.app/Contents/MacOS/Google Chrome". Das Problem ist, wie Sie den Chrome-Prozessbaum von Terminal.app trennen, damit Chrome nicht beendet wird, wenn ich das Terminalfenster schließe. Ich habe all das versucht, ohne Erfolg:

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" &

nohup "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" &
disown

screen "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

screen "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" &

Gibt es Vorschläge, wie Sie den Chrome-Prozessbaum wirklich von Terminal.app trennen können? Gibt es eine andere Möglichkeit, eine Befehlszeilenverknüpfung zum Starten und Trennen von Chrome zu erstellen?


BEARBEITEN: Beachten Sie, dass die Antworten auf diese Frage auch für das Starten anderer Anwendungen als nur Chrome gelten.

AlcubierreDrive
quelle
Bitte bearbeiten Sie Ihre Frage, um sie auf alle Bewerbungen anzuwenden. Wir brauchen keine Kopie dieses Themas für jede Mac-Anwendung unter der Sonne.
Daniel Beck
Nicht was ich meinte. Da wir den Verlauf jedes Posts verfolgen, gibt es keinen Grund, alte Inhalte überleben zu lassen. Ich würde vorschlagen, dass Sie den Titel allgemeiner bearbeiten ("Mac-Anwendung vom Terminal trennen" oder ähnliches) und nur Chrome als Beispiel verwenden. Aber das ist nur meine Meinung.
Daniel Beck
@ Daniel Fühlen Sie sich frei, um die gewünschten Änderungen vorzunehmen. Ich sehe, Sie haben genug Repräsentanten und sind ziemlich sachkundig
AlcubierreDrive

Antworten:

1

Versuche dies:

open "/Applications/Google Chrome.app"

William Jackson
quelle
Nett! Vielen Dank. Wenn Sie den vollständigen Pfad zur ausführbaren Datei verwenden, wird seltsamerweise ein neues Terminalfenster geöffnet: Öffnen Sie "/ Applications / Google Chrome.app/Contents/MacOS/Google Chrome". Irgendeine Idee warum?
AlcubierreDrive
@ Jon openverwendet Launch Services, um zu bestimmen, mit welcher Anwendung eine Datei geöffnet werden soll. Wenn Sie es tun, wie William es vorschlägt, wird das Mac-Anwendungspaket geöffnet, aber Sie starten die Unix-Binärdatei selbst, die ein Fenster für die Konsolenausgabe ( stdout) erhält . openkehrt sofort zurück, daher gibt es nicht viele andere Optionen. Sie können open -a "Google Chrome"Launch Services auch verwenden , um zu bestimmen, welche registrierte Kopie von Google Chrome gestartet werden soll.
Daniel Beck
@ Daniel Beck Anscheinend funktioniert das auch: open -a "/ Applications / Google Chrome.app/Contents/MacOS/Google Chrome"
AlcubierreDrive
@ Jon Sicher, aber worum geht es? Da es sich um eine Anwendung handelt, wird mit oder ohne Argument begonnen -a. Die Semantik unterscheidet sich geringfügig ( öffnen Sie die Datei ...mit der Standardanwendung für diesen Typ und öffnen Sie die Anwendung... ), aber das Ergebnis ist dasselbe.
Daniel Beck
@ Daniel Probieren Sie es aus. Ohne das -a startet ein neues Terminalfenster, was nervt. Mit dem -a geht das nicht, daher würde ich letzteres vorziehen.
AlcubierreDrive
0
open -a "Google Chrome"

Dadurch wird Chrome geöffnet, unabhängig davon, wo es installiert ist. Dies kann über einen fest codierten Pfad wünschenswert sein.

Beachten Sie auch, dass die Verwendung opender ausführbaren Datei sich dadurch von der direkten Ausführung unterscheidet, dass keine zweite Kopie von Chrome gestartet wird . Dies ist das korrekte Verhalten des Mac. Das direkte Ausführen der ausführbaren Datei sollte nur durchgeführt werden, wenn Sie besondere Anforderungen haben, z. B. die Übergabe von Befehlszeilenargumenten (die eine ordnungsgemäße Mac-Anwendung unter normalen Umständen niemals benötigen sollte).

Kevin Reid
quelle
1
open -na "Google Chrome"öffnet eine zweite Instanz. open -a "Google Chrome" --args "someArg"übergibt Argumente.
Daniel Beck
Interessant. --argsist anscheinend neu in 10.6, aber auch -nneu für mich. Offensichtlich habe ich die Manpage openschon eine Weile nicht mehr gelesen .
Kevin Reid