36

私のシェル環境には、エイリアスとカスタム関数があります。emacs のインスタンス (私は常に を使用emacs -nw) にいて、シェル コマンド ( M-!) を実行すると、それらを使用できません。これらを行うために独自のサブシェルを起動すると想像するので、これは理にかなっています...しかし、.emacsこれを機能させる方法はありますか?おそらく、与えられたシェルコマンドを実行する前に、デフォルトで環境を調達する必要があったとしても?

4

6 に答える 6

42

以下は、関連する質問だと思うことについての私のコメントです。

M-x シェルコマンドM-x コンパイルの両方が、call-processを介して下位シェルでコマンドを実行すると思います。.emacsで次のことを試してください(または単に評価してください):

(setq shell-file-name "bash")
(setq shell-command-switch "-ic")

M-x上記の評価後、シェルコマンドとM-xコンパイルの両方で使用するために.bashrcエイリアスが取得されていることに気付きました。

M-xyour_aliasをコンパイルしますRET RET

その後、動作するはずです。

私の環境:Emacs 24.1(pretest rc1)、OSX 10.7.3

ソース

于 2012-09-01T16:20:54.867 に答える
2

http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Filesを読んでください。

非対話型シェルの場合、供給される唯一のファイルは BASH_ENV 環境変数の値です。BASH_ENV=~/.bashrc emacs emacsがシェルコマンドにbashを使用するかのように、emacsを呼び出します-一部のプログラムは、具体的に「/bin/sh」を使用します

于 2012-09-01T14:40:07.663 に答える
-3

エイリアスと関数を.bashrcではなくに入れます.bash_profile。後者はログイン シェルでのみ実行され、前者はすべてのシェルで実行されます。

于 2012-09-01T04:52:36.780 に答える