.bash_profile或.bashrc用于emacs中的shell?


11

我为一个巨大的命令编写了一个别名,并将其存储在其中.bash_profile,令我惊讶的是,emacs没有使用我在其中编写的别名.bash_profile。在Internet上进行一些搜索之后,我.bashrc使用别名命令在$ HOME中创建了一个文件,仅在该emacs选择了别名之后。我很困惑,因为terminal.app取别名,.bash_profile而emacs仅取别名.bashrc

我正在跑步,M-x shell并且正在使用macOS。有人可以解释一下我与emacs和.bashrc&有什么关系.bash_profile

更重要的是,我怎样才能使Emacs .bash_profile除了阅读我的书.bashrc


1
您是如何获得Emacs的.bashrc别名的?我之所以这样问是因为我的Emacs(显然是其他人的)默认情况下不这样做。
斯坦顿拱门

@ArchStanton看到@Vera Johanna回答了这个问题。那是我使用的相同方法。虽然现在我使用的zsh不是bash :)
Chakravarthy Raghunandan '18

Answers:


14

这是正确的行为。.bash_profile用于所谓的登录shell。就像当您以文本模式登录到计算机,或在终端仿真器中通过sshtelnet或登录到另一台计算机时一样。

.bashrc用于非登录shell,例如已经登录并启动新的xterm时(在这种情况下为emacs shell模式)。

通常,.bash_profile包含命令也要读入.bashrc

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

因此.bashrc,每次启动时都会读取。


因此,别名属于.bashrc;。还习惯创建一个单独的.bash_aliases.bashrc通过相同的构造将其包括在内:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

11

除了@pingi提出的要点外,您还可以使用单独的配置文件,该配置文件仅为emacs shell(M-x shell)加载:

从手册页(emacs)Interactive Shell

Emacs向新Shell发送文件“〜/ .emacs_SHELLNAME”的内容作为输入(如果存在),其中SHELLNAME是从中加载该Shell的文件的名称。例如,如果您使用bash,则发送给它的文件是'〜/ .emacs_bash'。如果找不到此文件,Emacs将尝试使用“〜/ .emacs.d / init_SHELLNAME.sh”。

如果要在Emacs中使用不同的Shell提示符格式,或者要定义用于将文件传递给emacsclient的函数,则这很有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.