Невозможно открыть Cocoa Emacs из терминала с помощью open -a

Невозможно открыть Cocoa Emacs из терминала с помощью open -a

Я установил emacs на свой MacBook Air с Mac OS X 10.6.5 с этого сайтаhttp://emacsformacosx.com/. Я думаю, что это то, что раньше называлось cocoa emacs. Я перетащил его в папку Application, и он отлично работает, когда я запускаю его оттуда. Я хочу иметь возможность запускать его из терминала. После некоторого гугления я попробовал open -a /Application/Emacs.app foo.txt(foo.txt был существующим файлом). У меня появилось два окна emacs — одно с экраном приветствия и одно с загруженным foo.txt. Я попробовал несколько приложений в каталоге /Applications, и они, похоже, не вели себя так. Я установил его, используя свою собственную учетную запись (учетную запись администратора), поэтому после выполнения ls -lя /Applicationзаметил, что владелец и группа отличались от других записей в этой папке. Я рекурсивно изменил владельца и группу на root и wheel, как и у других, но это не помогло. Единственное, что сейчас выглядит забавно, так это то, что ls -l показывает символ @, который как-то связан с расширенными атрибутами, но я не знаю, как их проверить.

Есть ли у вас предложения, что проверить дальше?

Является ли использование команды open единственным способом запуска программы? Могу ли я смоделировать то, что она делает, с помощью скрипта оболочки?

решение1

Вы не понимаете, как openэто работает: своей командой open /Application/Emacs.app foo.txtвы указываете openоткрыть два файла, а именно Emacs и файл txt, но это две разные операции: сначала будет запущен emacs, а затем foo.txtбудет загружена программа по умолчанию для .txtфайлов, которой в вашем случае, по-видимому, является Emacs.

Пока Emacs является приложением по умолчанию для этого типа файлов, простое использование open foo.txtоткроет файл в Emacs, но если он не является приложением по умолчанию, вам придется использовать open foo.txt -a /Applications/Emacs.app( -aпереключатель open сообщает, какое приложение использовать) или, возможно, вы могли бы передать его в качестве параметра с помощью --argsтакой опции: open /Applications/Emacs.app --args foo.txt.

решение2

Это на самом деле немного странно; для моей установки (которую я сделал с помощью homebrew) open -a Emacs file.txt работает нормально... может быть, вам следует перестроить базу данных LaunchServices? Но в любом случае вы должны иметь возможность вызывать исполняемый файл напрямую с помощью

/Applications/Emacs.app/Contents/MacOS/Emacs file.txt

Связанный контент