~/bin/emacs for Emacs.app on macOS
ほかにこんなことでひっかかる人はいないと思うがメモ。
macOS の Emacs は Emacs.app である。Emacs.app/Contents/MacOS/Emacs が実体の bundle 構造というフォルダ構成になっている。macOS では open -a Emacs
で起動することができるが、emacs
では起動できない。
これが問題になることは非常に少ないのだけど、たまにある。例として OCaml でEmacsの開発環境を構築するときがある。このようなコマンドを実行すると失敗する。
opam install user-setup tuareg ocamlformat merlin
これを実行するとどうなるか emacs --version
で失敗してしまう。
The following actions will be performed: ∗ install conf-emacs 1 [required by tuareg] ∗ install tuareg 3.0.1 ∗ install user-setup 0.7 ===== ∗ 3 ===== Do you want to continue? [Y/n] y <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><> 🐫 ⬇ retrieved user-setup.0.7 (cached) [ERROR] The compilation of conf-emacs.1 failed at "emacs --version". ⬇ retrieved tuareg.3.0.1 (https://opam.ocaml.org/cache) #=== ERROR while compiling conf-emacs.1 =======================================# # context 2.1.3 | macos/x86_64 | ocaml-base-compiler.4.13.1 | https://opam.ocaml.org#685eb4ef # path ~/.opam/4.13.1/.opam-switch/build/conf-emacs.1 # command ~/.opam/opam-init/hooks/sandbox.sh build emacs --version # exit-code 71 # env-file ~/.opam/log/conf-emacs-98834-41a416.env # output-file ~/.opam/log/conf-emacs-98834-41a416.out ### output ### # sandbox-exec: execvp() of 'emacs' failed: No such file or directory <><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><> 🐫 ┌─ The following actions failed │ λ build conf-emacs 1 └─
仕方がないので ~/bin/emacs
を仕込むことにした。
#!/bin/bash if [ -r /Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs ] ; then /Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs $@ elif [ -r /Applications/Emacs.app/Contents/MacOS/Emacs ] ; then /Applications/Emacs.app/Contents/MacOS/Emacs $@ elif [ -r /Applications/Emacs27.app/Contents/MacOS/Emacs ] ; then /Applications/Emacs27.app/Contents/MacOS/Emacs $@ else vim $@ fi