Zainstalowałem emacsa na moim MacBooku Air z systemem Mac OS X 10.6.5 z tej strony http://emacsformacosx.com/ . Uważam, że tak właśnie nazywano emaki kakaowe. Przeciągnąłem go do folderu aplikacji i działa dobrze, gdy go uruchomię. Chcę móc uruchomić go z terminala. Po pewnym googlowaniu spróbowałem open -a /Application/Emacs.app foo.txt
(foo.txt był i istniejący plik). Mam dwa okna emacsa - jedno z ekranem powitalnym i jedno z załadowanym plikiem foo.txt. Wypróbowałem kilka aplikacji z katalogu / Applications i nie wyglądały tak. Zainstalowałem go przy użyciu własnego konta (konta administratora), więc po zrobieniu ls -l
tego/Application
Zauważyłem, że właściciel i grupa różnią się od innych pozycji w tym folderze. Rekurencyjnie zmieniłem właściciela i grupę na root i wheel, podobnie jak inni, ale to nie pomogło. Jedyną rzeczą, która wygląda teraz zabawnie, jest to, że ls -l pokazuje znak @, który ma coś wspólnego z rozszerzonymi atrybutami, ale nie wiem, jak to sprawdzić.
Wszelkie sugestie dotyczące tego, co następnie sprawdzić?
Czy użycie polecenia open służy tylko do uruchomienia programu? Czy mogę symulować to, co robi za pomocą skryptu powłoki?
Odpowiedzi:
Nie rozumiesz, jak to
open
działa: za pomocą poleceniaopen /Application/Emacs.app foo.txt
każeszopen
otworzyć dwa pliki, mianowicie Emacsa i plik txt, ale są to dwie różne operacje: Najpierw uruchomi się emacs, a następniefoo.txt
zostanie załadowany domyślnym programem do.txt
plików, który jest najwyraźniej Emacs w twoim przypadku.Tak długo, jak Emacs jest domyślny dla tego typu pliku, samo użycie
open foo.txt
spowoduje otwarcie pliku w Emacsie, ale jeśli nie jest to domyślny, będziesz musiał użyćopen foo.txt -a /Applications/Emacs.app
(-a
przełącznik mówi open jakiej aplikacji użyć), a może możesz go podać na jako parametr z--args
opcją tak:open /Applications/Emacs.app --args foo.txt
.źródło
-a
przełącznika.To jest trochę dziwne; w mojej instalacji (co zrobiłem z homebrew), otwórz plik Emacs.txt działa dobrze… może powinieneś przebudować bazę danych LaunchServices? Ale i tak powinieneś być w stanie wywołać plik wykonywalny bezpośrednio za pomocą
źródło