私のシェル環境には、エイリアスとカスタム関数があります。emacs のインスタンス (私は常に を使用emacs -nw
) にいて、シェル コマンド ( M-!
) を実行すると、それらを使用できません。これらを行うために独自のサブシェルを起動すると想像するので、これは理にかなっています...しかし、.emacs
これを機能させる方法はありますか?おそらく、与えられたシェルコマンドを実行する前に、デフォルトで環境を調達する必要があったとしても?
6 に答える
以下は、関連する質問だと思うことについての私のコメントです。
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
http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Filesを読んでください。
非対話型シェルの場合、供給される唯一のファイルは BASH_ENV 環境変数の値です。BASH_ENV=~/.bashrc emacs
emacsがシェルコマンドにbashを使用するかのように、emacsを呼び出します-一部のプログラムは、具体的に「/bin/sh」を使用します
エイリアスと関数を.bashrc
ではなくに入れます.bash_profile
。後者はログイン シェルでのみ実行され、前者はすべてのシェルで実行されます。