2010-02-18 106 views
2

我想启动几个shell,并从我的.emacs设置它们的目录。打开它们很容易:自定义shell从.emacs自动启动

;; run a few shells. 
(shell "*shell5*") 
(shell "*shell6*") 
(shell "*shell7*") 

但我想指定他们的目录。

+0

只是一个想法,有点哈克以下的作品,但它的外壳目录来自当前打开的缓冲区的目录?如果是这样,您可以在每个目录中打开一个临时文件,并在打开该文件后启动该shell。 – Skilldrick 2010-02-18 12:40:06

回答

4

(let ((default-directory "/path/to/whereever/")) 
    (shell "*shell1*")) 
+0

没有为我工作,例如,如果我使用/ usr/src,shell仅在/ usr启动,同样的情况发生在/ home/guest,在/ home开始 – coelhudo 2010-02-18 14:53:38

+0

尝试添加尾部斜线,即“/ path/to/wherever /”。 – jlf 2010-02-18 15:46:08

+0

工作,即使在Windows上使用“\\”作为反斜杠。谢谢! – sandos 2010-02-19 10:12:19

0
(shell "*shell5*") 
(with-current-buffer "*shell5*" 
(goto-char (point-max)) 
(insert "cd dir")) ;;for example 
(comint-send-input nil t) ;; enter 

现在我有这个,它需要一些改进,我认为。当我在我的emacs中使用它时会导致错误,但是按照你的要求。我会尽力找出原因。

+0

那太棒了。现在没有时间玩这个,也许今晚晚些时候。 – sandos 2010-02-18 15:01:29

+0

我认为我接受的解决方案可能更好,但如果我想在shell中做其他任何事情,这个想法仍然很有趣! – sandos 2010-02-19 10:13:32

+0

是的,伊万答案是一个简单的解决方案:) – coelhudo 2010-02-19 13:20:58