關於Cygwin的x-Server的自動運行以及相關腳本修改

  經常須要用到遠端服務器的圖形工具,若是在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編程!!!
相關文章
相關標籤/搜索