常常需要用到远端服务器的图形工具,如果在windows端没用xserver的话,很多程序无法运行。一个特殊的例子,emacs在没用xserver的时候,是直接在终端中打开的,如果不修改cygwin.bat文件。
 
      废话少说,下载安装cygwin的x11相关包。装完后,在C:\cygwin\usr\X11R6\bin下有个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:\cygwin\usr\X11R6\bin\startxwin.bat
  chdir C:\cygwin\bin
  bash --login -i
 
 
       第二行是防止在shell中打开的无窗口的emacs无法退出。第四行是判断是否含有xserver的进程并处理,第五行是调用startxwin.dat脚本。
 
       在经过这么一次折腾之后,发现就连dos的批处理都这么牛逼,可想linux的shell有多强大了,要好好学习shell编程!!!

关于Cygwin的x-Server的自动运行以及相关脚本修改的更多相关文章

  1. Windows10开机自动运行批处理、脚本等的方法

    方法/步骤: 一:打开我的电脑, 在地址栏输入:“C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup”, 二,把自动运行批处理.脚 ...

  2. CentOS开机自动运行程序的脚本

    有些时候我们需要在服务器里设置一个脚本,让他一开机就自己启动.方法如下: cd /etc/init.dvi youshell.sh   #将youshell.sh修改为你自己的脚本名编写自己的脚本后保 ...

  3. Linux、UNIX设置开机自动运行命令、脚本配置

    一般我们不建议人工部署开机自动启动的脚本.而是建议通过crontab 部署脚本监控,理由如下: 1.自动开机部署脚本不好定位问题,有可能导致主机重启过慢. 2.自动开机部署脚本不好定位问题,有可能导致 ...

  4. Linux如何开机自动运行自己的脚本

    博客分类: LINUX 脚本LinuxCentOSWindowsBash      记录这个事情是上次完成之后,今天要新加一个文件夹,一时之间忘记以前怎么做了,因为有几种方法,起码我知道三种方法,这里 ...

  5. CentOS开机自动运行自己的脚本详解

    一.root权限编辑/etc/rc.d/rc.local su cd /etc/rc.d/ vi rc.local 二.在这个文件加上你要执行的脚本,全部内容如下: #!/bin/sh # # Thi ...

  6. 设置Qt程序在Windows开机后自动运行

    (转自:http://blog.csdn.net/weiren2006/article/details/7443362) 主要原理是修改Windows的注册表来实现的,Qt的QSettings提供了访 ...

  7. ubuntu用户注销后登录xmodmap无法自动运行

    2015-12-17 21:34:50 还是无法解屏后 自动运行xmodmap ,继续谷歌找到一方法,选装gnome-tweak-tool sudo apt-get install gnome-twe ...

  8. Windows Server 2008 任务计划无法自动运行的解决办法

    问题:编写的bat脚本,直接执行,成功:但是在任务管理器中配置该任务,运行不成功,结果显示为:0x1,系统环境为 Windows Server 2008. 分析:bat任务没有调用执行. 解决方案: ...

  9. Zabbix Server 和 Zabbix Agentd 开机自动运行

    Zabbix Server 和 Zabbix Agentd 开机自动运行 请问:怎样 Zabbix Server 和 Zabbix Agentd 开机自动运行? 注:如果你的命令行写进了 /etc/r ...

随机推荐

  1. c语言中argc和argv是什么意思?

    argc是参数个数,定义为intargv是字符串数组,存的是参数,定义为char**或者char* argv[]比如你编译好的程序为my.exe在命令行执行 my.exe 1 2 3那argc就是4, ...

  2. 蓝缘管理系统第三版推出。springMVC4.0+shiro1.2.3+spring4.x+Mybaits3.2.8

    blog.csdn.net/mmm333zzz/article/details/42059349 http://blog.csdn.net/zoutongyuan/article/details/41 ...

  3. HDU 4638 Group 树状数组 + 思路

    实际上就是问这个区间编号连续的段的个数,假如一个编号连续的段有(a+b)个人,我把他们分在同一组能得到的分值为(a+b)^2,而把他们分成人数为a和b的两组的话,得到的分值就是a^2+b^2,显然(a ...

  4. android 四种堆状态

    总结下: ====> 建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型 http://www.cnblogs.com/ghj1976/a ...

  5. Diving Into Lync Client Logins

    Now that we have a fully functional UC lab it's time to start using the lab to explore various aspec ...

  6. 通过从代码层面分析Linux内核启动来探知操作系统的启动过程

    通过从代码层面分析Linux内核启动来探知操作系统的启动过程 前言说明 本篇为网易云课堂Linux内核分析课程的第三周作业,我将围绕Linux 3.18的内核中的start_kernel到init进程 ...

  7. leetcode:Merge Two Sorted Lists(有序链表的归并)

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  8. Java关键字static、final

    static  1. static变量     按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的 ...

  9. Android 最火的快速开发框架XUtils

    参考:http://www.oschina.net/p/xutils 项目git地址https://github.com/wyouflf/xUtils 目录(?)[-] 最近搜了一些框架供初学者学习比 ...

  10. 【第一篇】说说MVC+EF easyui dataGrid 动态加载分页表格

    首先上javascript的代码 <script type="text/javascript"> $(function () { LoadGrid(); }) //加载 ...