我在~/.bashrc中定义了一些别名和函数。
我使用emacs -nw
从终端窗口启动emacs。
当我执行M-x shell-command
时,来自~/.bashrc的别名和函数不可用,会提示"command not found"。
我已经进行了相当多的谷歌搜索,但所有的帖子都说,在这种情况下应该工作的地方是~/.bashrc(而不是~/.profile或~/.bash_profile)。
我错过了什么?
别名仅在交互式 shell 中可用 - 从 bash 手册中获取的快照:
除非使用 shopt 设置 expand_aliases shell 选项(请参见下面 SHELL BUILTIN COMMANDS 下的 shopt 描述),否则别名不会在 shell 非交互时扩展。
shell-command
和shell
都可用,至少对我来说是这样。但是,正如其他答案所说,没有真正的方法在Emacs中获取.bashrc环境。有一些关于.emacs_bash文件的文档,但对我来说从未起作用。explicit-bash-args
),使bash变为交互式,但这可能会产生意想不到的后果。