• 关于Cygwin的x-Server的自动运行以及相关脚本修改


      常常需要用到远端服务器的图形工具,如果在windows端没用xserver的话,很多程序无法运行。一个特殊的例子,emacs在没用xserver的时候,是直接在终端中打开的,如果不修改cygwin.bat文件。
     
          废话少说,下载安装cygwin的x11相关包。装完后,在C:cygwinusrX11R6in下有个startxwin.bat文件,注释掉   %RUN% xterm -e /usr/bin/bash -l    这一行。以后每次点开此脚本文件,就不用弹出烦人的xterm了,而xserver会自动最小化在系统托盘。
     
         但是每次都要手工点这个批处理脚本,很麻烦,于是想办法写入cygwin.bat中随着cygwin的终端一起运行。不过又有一个问题,在启动cygwin之后,如果关闭shell,那么xserver是还在运行的,下次在打开这个脚本,会弹出xserver已运行的错误。于是需要增加一个判断:如果xserver已运行,则不调用startxwin.dat脚本,否则调用。
     
          但是问题又来了,加了此判断之后,如果xserver已启动,在关闭shell之后再重新打开shell,发现emacs又重新在shell内打开,而不是弹出窗口,bug?
     
          于是修改对判断的处理:若xserver已运行,则杀掉该进程。这样,不管xserver在不在运行,运行cygwin.bat脚本时都会调用startxwin.dat脚本,emacs等程序也都没用问题了:) 
     
          修改之后的cygwin.bat脚本如下:
     
      @echo off
      set CYGWIN=binmode tty ntsec
      C:
      for /f %%i in ('tasklist') do if /i %%i==XWin.exe (taskkill /IM XWin.exe /F)
      call C:cygwinusrX11R6instartxwin.bat
      chdir C:cygwinin
      bash --login -i
     
     
           第二行是防止在shell中打开的无窗口的emacs无法退出。第四行是判断是否含有xserver的进程并处理,第五行是调用startxwin.dat脚本。
     
           在经过这么一次折腾之后,发现就连dos的批处理都这么牛逼,可想linux的shell有多强大了,要好好学习shell编程!!!
  • 相关阅读:
    每天一个JavaScript实例-从一个div元素删除一个段落
    Ewebeditor最新漏洞及漏洞大全
    WebKit历史项管理的实现
    C# 字符串处理
    Handler具体解释系列(四)——利用Handler在主线程与子线程之间互发消息
    (linux shell)第一章--小试牛刀(上)
    关于如何使用three.js的小教程<一>
    Readprocessmemory使用方法
    CentOS 6.4 U盘启动盘制作、安装及遇到的问题解决
    poj 2774 Long Long Message,后缀数组,求最长公共子串 hdu1403
  • 原文地址:https://www.cnblogs.com/striver-zhu/p/4574827.html
Copyright © 2020-2023  润新知