如何重新加载交互式shell并在emacs启动时运行一些命令?

时间:2010-04-11 08:19:37

标签: emacs

我知道我必须添加以下内容:

:到我的.emacs文件。但是,我怎样才能让它执行shell命令,如:

cd / mydirectory

:和其他shell操作

3 个答案:

答案 0 :(得分:4)

这是一个能够满足您需求的功能。您可以添加它(自定义操作),或只添加正文:

(defun shell-and-stuff ()
  "run a shell, then do some extra stuff"
  (interactive)
  (let ((shell-buf (get-buffer-create "*shell*")))
    (shell shell-buf)
    (comint-send-string
     (get-buffer-process shell-buf)
     "cd some-directory
ls
touch frog
")))
(shell-and-stuff)

答案 1 :(得分:1)

cd部分很简单,只需let绑定变量default-directory。有关可能的解决方案,请参阅this question

答案 2 :(得分:1)

Trey Jackson的想法很好看。另请注意,手册(info "(emacs) Interactive Shell")

  

Emacs向新shell发送文件内容   ~/.emacs_SHELLNAME作为输入,如果存在,则SHELLNAME为   从中加载shell的文件的名称。例如,如果你   使用bash,发送给它的文件是~/.emacs_bash。如果没有这个文件   发现,Emacs试图回到~/.emacs.d/init_SHELLNAME.sh

所以你可以将命令放在那个文件中。