在没有XServer的系统上启动时运行Emacs

时间:2017-07-13 10:33:59

标签: linux bash shell unix emacs

我想以用户身份登录bash后运行Emacs。 但是,如果按CTRL-Z,我也希望能够跳回到bash提示符。

我尝试了几个.bashrc和.profile:

的设置
emacs

eval 'emacs'

bash -c emacs

exec emacs -nw

问题是所有这些变种使得CTRL-Z让我不会出现bash提示,但是要清空stdin,就像bash提示没有加载一样。 有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

感谢Mark Plotnick,他在评论中回答了以下问题。使用ioctl你可以写自己的tty。 c程序:

#include "unistd.h"
#include "stdlib.h"
#include "stdio.h"
#include "sys/stat.h"
#include "sys/types.h"
#include "fcntl.h"
#include "termios.h"
#include "sys/ioctl.h"

int main(int argc, char ** argv)
{
  if (argc >= 3)
    {
      int fd = open (argv[1], O_RDWR);

      if (fd)
    {
      char * cmd = argv[2];
      while(*cmd)
        ioctl(fd, TIOCSTI, cmd++);

      if (argc >= 4)
        ioctl(fd, TIOCSTI, "\r");

      return 0;
    }
      else
    printf("could'n open file\n");

    }
  else
    printf("wrong args\n");
  return -1;
}

编译: gcc my_ioctl.c -o my_ioctl

.profile的结尾:

~/my_ioctl $(tty) emacs rr

(我的c程序并不关心第3个arg实际上是什么)。