gnu 屏幕中 emacs 中 shell 缓冲区中的命令
command in shell buffer in emacs in gnu screen
问题 How do I define an Emacs List function to spawn a shell buffer with a particular command executed in the shell 的出色答案奇怪地在 Gnu "screen" 会话中不起作用。在屏幕命令的上下文中,而不是我告诉它执行的命令,
echo 'test1'\n
,Emacs被递归调用了!可能的 shell 缓冲区包含熟悉的 "emacs: Terminal type "dumb" is not powerful enough to 运行 Emacs" 消息。
我怎样才能完成这项工作?这是我所做的:
在命令行上:
~ srn@basil{1}% screen -s run-emacs2
这是 shell 脚本 运行-emacs2:
#!/bin/bash
EMACS=/usr/bin/emacs23-x
export NO_AT_BRIDGE=1 ## suppress annoying gtk>2 warning
exec "$EMACS" -nw --load init.el.test -f spawn-shell
注意:如果在命令行上我说:
~ srn@basil{1}% run-emacs2
...一切正常。问题似乎是与 Gnu 屏幕的一些交互。
这里是 init.el.test(几乎是从上面链接的答案中逐字记录的):
(defun spawn-shell ()
"Invoke shell test"
(pop-to-buffer (get-buffer-create (generate-new-buffer-name "gzo")))
(shell (current-buffer))
(process-send-string nil "echo 'test1'\n"))
这是预期的行为。根据 screen
手册,-s
选项在哪里看:
-s
program
Set the default shell to be program. By default, screen uses the value of the environment variable $SHELL
, or /bin/sh
if it is not defined. This option is equivalent to the shell command (see Shell).
screen
程序将$SHELL
变量设置为程序(作为打开新的window的一部分),它是继承的在子进程中,它依次运行 $SHELL
恰好是什么。由于您不希望这样,解决方法是将 emacs
脚本修改为 reset $SHELL
回到 /bin/sh
before 运行一个“shell”。
问题 How do I define an Emacs List function to spawn a shell buffer with a particular command executed in the shell 的出色答案奇怪地在 Gnu "screen" 会话中不起作用。在屏幕命令的上下文中,而不是我告诉它执行的命令,
echo 'test1'\n
,Emacs被递归调用了!可能的 shell 缓冲区包含熟悉的 "emacs: Terminal type "dumb" is not powerful enough to 运行 Emacs" 消息。
我怎样才能完成这项工作?这是我所做的:
在命令行上:
~ srn@basil{1}% screen -s run-emacs2
这是 shell 脚本 运行-emacs2:
#!/bin/bash
EMACS=/usr/bin/emacs23-x
export NO_AT_BRIDGE=1 ## suppress annoying gtk>2 warning
exec "$EMACS" -nw --load init.el.test -f spawn-shell
注意:如果在命令行上我说:
~ srn@basil{1}% run-emacs2
...一切正常。问题似乎是与 Gnu 屏幕的一些交互。
这里是 init.el.test(几乎是从上面链接的答案中逐字记录的):
(defun spawn-shell ()
"Invoke shell test"
(pop-to-buffer (get-buffer-create (generate-new-buffer-name "gzo")))
(shell (current-buffer))
(process-send-string nil "echo 'test1'\n"))
这是预期的行为。根据 screen
手册,-s
选项在哪里看:
-s
programSet the default shell to be program. By default, screen uses the value of the environment variable
$SHELL
, or/bin/sh
if it is not defined. This option is equivalent to the shell command (see Shell).
screen
程序将$SHELL
变量设置为程序(作为打开新的window的一部分),它是继承的在子进程中,它依次运行 $SHELL
恰好是什么。由于您不希望这样,解决方法是将 emacs
脚本修改为 reset $SHELL
回到 /bin/sh
before 运行一个“shell”。