emacs の特定のシェルで `Mx compile` を実行するにはどうすればよいですか?

emacs の特定のシェルで `Mx compile` を実行するにはどうすればよいですか?

でのみコンパイルできるソフトウェアがあります。私は日常業務でこれをmy-weird-sh使用するのが好きなので、これをログイン シェル (経由) にしています。これにより、通常はまったく問題のないEmacs のシェルが に変更されます。ただし、ソフトウェアをコンパイルできません。some-better-shchshmy-better-shsome-better-sh

のシェルを変更するにはどうすればいいですかcompile?

答え1

使用

(defun weird-compile () (interactive)
  (let ((shell-file-name "/bin/my-weird-sh"))
    (call-interactively #'compile)))

shell-file-nameこれは、 を呼び出すときにローカルに設定されweird-compile、任意のキーにバインドできます。

関連情報