Programm in der Shell ausführen

F3lx

F3lx

Mitglied
Thread Starter
Dabei seit
24.05.2006
Beiträge
70
Reaktionspunkte
0
Hallo an alle,

hoffe hier kann mir jemand weiterhelfen.

Ich mache gerade einen UNIX/Linux-Kurs (sehr geil nebenbei bemerkt).
In der BASH von Suse kann man ein Programm einfach ausführen indem man den Programmnamen in die BASH als Command eingibt - egal in welchem Verzeichnis man sich befindet - also ob ich nun in meinem /Home oder /usr oder /etc oder sonst wo bin.

Wenn ich ein Programm unter Leopard in der SHELL ausführen möchte geht das ja mit "open Safari.app" (als Beispiel). Das geht aber nur in dem Verzeichnis /Applications - in jedem anderen Verzeichnis gibt er mir die Meldung aus: Safari.app does not exist !

Gibt es einen Weg, dass ich Programm von überall ausführen kann???

Danke
Gruß Felix
 
wenn du mit open eine app starten willst:
open -a Safari
das .app gehört da nicht hin...

ansonsten musst du halt das binary öffnen.
das findest in der app
Blah.app/Contents/MacOS/Blah
 
also open -a Safari.app geht auch...

gibt's zum open auch ein close? das was ich gefunden hab, löscht deskriptoren
 
Du musst entweder in das Verzeichnis wechseln oder den kompletten Pfad eingeben. Oder du machst es richtig auf UNIXisch und erweiterst die Variable $PATH, in der die Pfade stehen, in denen nach ausführbaren Programmen gesucht wird (export PATH="/bin:/sbin:/usr/bin:/usr/sbin:...", aber nicht die vorhandenen Daten überschreiben!)
 
Weitere Alternative: osascript

Code:
osascript -e 'tell Application "Safari" to run'
 
Du musst entweder in das Verzeichnis wechseln oder den kompletten Pfad eingeben. Oder du machst es richtig auf UNIXisch und erweiterst die Variable $PATH, in der die Pfade stehen, in denen nach ausführbaren Programmen gesucht wird (export PATH="/bin:/sbin:/usr/bin:/usr/sbin:...", aber nicht die vorhandenen Daten überschreiben!)

Hm... also die Variable $PATH zu erweitern haben wir heute durchgenommen - war leider kurz nur körperlich anwesend und habs nicht kapiert. Unser Dozent meinte, man müsse in diesem Fall nur ausführen:

PATH="$PATH:/Applications"

das habe ich auch gemacht, leider hat es keine Wirkung gezeigt.
Könnte mir jemand Step-for-Step erklären was ich machen muss - ohne was zu überschreiben?

Danke
 
noch mal zum mitschreiben:
die .app pakete beinhalten die binaries, da kannst du nicht einfach was mit $PATH machen, weil du nicht jede app einzeln in den PATH nehmen kannst...
die sind auch nicht wirklich dazu gedacht so per shell gestartet zu werden...

wenn du rum spielen willst, nimm halt die unix binaries in /usr/bin /bin usw...
 
Außerdem ist es so, dass Du ja nicht das "Safari.app" Kommando ausführst, sondern das "open" Kommando und "Safari" als Argument mitgibst. Argumente werden nicht in $PATH gesucht.

ich weiß auch nicht, wo Dein Problem ist. Das "open" Kommando ist doch genau dafür da, GUI Programm aus der Shell zu starten. Falls Ihr die manpages noch nicht durchgenommen habt, frag Deinen Dozenten mal danach.


btw: was für ein Kursus ist das eigentlich?
 
So, habs jetzt geschnallt. Wenn ich "open -a Safari" eingebe,dann gehen die Programme von überall auf. Muss mir dann nochmal die Manpage durchlesen, warum das so ist.

Der Kursus nenn sich einfach Unix/Linux für Anfänger - wenn man von der Konsole garkeine Ahnung hat, sonst nur mit der Gui arbeitet, ist das schon wirklich spannend.

Was ich noch nicht ganz verstehe: Wenn ich "killall Dock" eingebe, startet das Dock neu. Wenn ich einen anderen Prozess beenden möchte, zB Safari, muss ich immer über die PID gehen, "killall PID" funktioniert, "killall Safari" funktioniert nicht. (???)

btw heute wollen wir Kompilieren durchnehmen-mal sehen ob ichs verstehe ;-)

sonst schonmal Danke für eure Hilfe
 
-- doppelt, warum auch immer :confused: --
 
Zuletzt bearbeitet:
Das killall Kommando ist nicht nur (wie der Name vermuten lässt) " zum "Killen" von Prozessen da, sondern um Signale an Prozesse zu senden.

Bei killall gibt man üblicherweise den Namen der Prozesse an.
Wenn man die Prozesse über die PID identifizieren möchte, verwendet man normalerweise das kill Kommando.

Details: manpages

"killall Safari" funktioniert natürlich auch, es macht vielleicht nur nicht das, was Du erwartest.
Daher bei Fragen bitte immer den klassischen Dreisatz verwenden:

1. Das möchte ich erreichen.
2. Das mache ich und erwarte, das dies passiert.
3. Das passiert stattdessen.

"Funktioniert nicht" ist keine ausreichende Aussage.
 
Zuletzt bearbeitet:
meine frage, ob's zum open auf einen gegenteiligen befehl gibt wurde wie mir scheint gar nicht beachtet. ich geh mal davon aus, den gibt's nicht...
 
gibt's zum open auch ein close? das was ich gefunden hab, löscht deskriptoren

geht halt entweder über kill oder applescript/osascript
Code:
osascript -e 'tell application "mail" to quit'
 
Zurück
Oben Unten