6

Windows 7。Emacs 24.3.1。Git 1.8.1.msysgit.1。同等の .emacs ファイルに次のものがあります。

(if (equal system-type 'windows-nt)
    (progn (setq explicit-shell-file-name
                 "C:/Program Files (x86)/Git/bin/sh.exe")
           (setq shell-file-name "bash")
           (setq explicit-sh.exe-args '("--login" "-i"))
           (setenv "SHELL" shell-file-name)
           (add-hook 'comint-output-filter-functions 'comint-strip-ctrl-m)))

これは、 Mx shellを実行したいときにうまく機能します。シェルを開いて「ls」と入力できます。

ただし、Mx shell-commandは失敗しています。shell-command ( Ch f shell-commandによると *Shell Command Output* バッファにその出力を出力する必要があります) を介して "ls" を実行しようとすると、1 つのエラー メッセージが表示されます。

「プログラムを検索しています: 許可が拒否されました、bash」

Google にはcall-processに関する非常に古い提案がいくつかあり、StackOverflow には Emacs でシェルを動作させるための多くの質問があります。Mx シェルはうまく機能することに注意してください。私が機能させたいのは shell-command です。

(理由: https://github.com/donkirkby/live-py-plugin#installing-the-emacs-mode )

4

3 に答える 3

12

同じ実行可能ファイルを指すように両方の変数を設定してみて、パスが にあることを確認してexec-pathください。

(setq explicit-shell-file-name
      "C:/Program Files (x86)/Git/bin/bash.exe")
(setq shell-file-name explicit-shell-file-name)
(add-to-list 'exec-path "C:/Program Files (x86)/Git/bin")
于 2013-05-21T18:43:15.123 に答える
2

これは古い質問であることは知っていますが、同じ問題についてヘルプを探しているときに見つけたので、将来誰かに役立つ場合に備えて、特定のユースケースに使用するソリューションを次に示します。

.emacs.dLinuxとWindowsの両方のマシンを含む、emacsを使用するすべてのコンピューター間で同期します。これをファイルに挿入してinit.el、Windows 環境でこの問題を適切に自動的に処理しました。

;; Set Windows-specific preferences if running in a Windows environment.
(defun udf-windows-setup () (interactive)
  ;; The variable `git-shell-path' contains the path to the `Git\bin'
  ;; file on my system. I install this in
  ;; `%USERPROFILE%\LocalAppInfo\apps\Git\bin'.
  (setq git-shell-path
        (concat (getenv "USERPROFILE") "\\LocalAppInfo\\apps\\Git\\bin"))
  (setq git-shell-executable
        (concat git-shell-path "\\bash.exe"))
  (add-to-list 'exec-path git-shell-path)
  (setenv "PATH"
          (concat git-shell-path ";"
                  (getenv "PATH")))
  (message "Windows preferences set."))

(if (eq system-type 'windows-nt)
    (udf-windows-setup))

システムにインストールしgit-shell-pathた場所に基づいて変数を定義する必要があることに注意してください。私はそれを使用する 1 つの Windows マシンgitにインストールします。%USERPROFILE%\LocalAppInfo\apps\Git

于 2014-06-18T19:24:55.177 に答える