LogIn E-mail
설계이야기
[CYGWIN]X setup하기
# 87 JMJS    10.8.6 04:21

A. Simple method

sh /bin/startxwin.sh &

B. Complex method

1. install xinit from X11 category with basic programs

2. make and put the following file (filename, ex, sx.sh) in /usr/bin directory

#! /bin/sh
export DISPLAY=127.0.0.1:0.0
export PATH=/usr/bin:"PATH"

# Cleanup from last run
rm -rf /tmp/.X11-unix
xwin&
/usr/X11R6/bin/wmaker&
xterm -geometry 80x40+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login

3. make. for example, a file called cgwinx.bat and put it in the main window or link it.

@echo off

f:
chdir f:\utils\cygwin\bin
sh sx.sh &


C. 배경없이 윈도우 띄우기

XWin -rootless -clipboard&
wmaker&


cyg-wrapper.sh 를 다운로드하여 /usr/local/bin에 저장한다.
.bashrc에 다음 라인을 추가한다.

alias gvim='cyg-wrapper.sh "C:/Progra~1/Vim/vim64/gvim.exe" --binary-opt=-c,--cmd,-T,-t,--servername,--remote-send,--remote-expr'

이렇게 하면 gvim이라고 쉘에서 수행하면 윈도우즈용 gvim이 실행된다.

---------------------------

출처: http://kangun.tistory.com/29



어쨌든 회사에서의 개발환경은 cygwin + gcc + gmake이다.  따라서 cygwin을 설치한다.

http://www.cygwin.com/setup.exe 를 다운받아놓도록 한다.  
향후 패키지를 추가/제거할 때도 사용하여야 하니까 그냥 다운 받아놓는 것이 낫다.  용량도 400KB 정도...

이걸 실행시키면 어디를 통해서 install 할 것인지를 물어본다.  
여기에서 Install from Internet을 사용한다.

Root Directory는 기본 설정인 C:\cygwin을 그냥 사용하는 것이 제일 무방할 듯 싶다.  
검색해본 결과 많은 사람들이 여기에 기반을 두고 작업을 하였기 때문에 헷갈리지 않을터이다.  
밑의 설정은 All Users와 Unix/binary에 체크한다. (기본 설정)

여기서 다음을 누르면 어디에 다운을 받을 것인지, 어떤 방법으로 받을 것인지 물어보는데 기본값을 쓰면 되고,
download site는 http://ftp.daum.net을 추가해서 쓰면 괜찮을 듯 하다.

기본값은 진짜 기본만 설치하게 되므로 나중에 되는게 하나도 없다
All 옆에 Install을 몇 번 클릭하여 Uninstall로 바꾸고, 원하는 패키지의 Unintall을 Install로 바궈서. 필요한 패키지만 설치하자.

직감적으로 gcc나 make, gdb, vim 등등은 당연히 해야할 것이라는 느낌이 온다.  
다음은 필요하다고 생각되는 package들을 정리한 것이다.

Admin - cygrunsrv (sshd 등을 bg로 돌릴 유틸)
Devel - gcc, make, ctags 관련
Editors - vim 관련
Net - openssh 관련 (ssh를 사용할 것이라면)
Shell - rxvt 관련 (xterm을 사용할 것이라면)


위에서 열거한 package 말고도 필요한 패키지들을 선택하도록 하고,
나중에 또 추가가 되므로 크게 신경 쓸 일은 아닌듯 하다.

어쨌거나 설치가 끝나면 환경변수를 설정하도록 한다.  
내 컴퓨터 우클릭하여 '속성'->'고급'->'환경변수'를 선택하여 사용자 변수와 시스템 변수를 추가하도록 한다.

사용자 변수
HOME=d:\home (linux에서의 ~ 를 말함)
LOGNAME= (windows 계정과 동일하게)

시스템 변수
CYGWIN (ntsec binmode)을 새로 만들고
PATH에 C:\Cygwin\bin을 추가한다 (당연히 항목과 항목 사이는 ;으로 구분한다).






만약 cygwin 자체의 terminal을 쓴다면 상관은 없지만, cygwin의 xterm을 사용하고 싶다면, 추가의 작업이 필요하다.

c:\cygwin을 보면 cygwin.bat가 있다.  autoexec.bat 이후로 bat 파일은 진짜 오랜만이다.  어쨌거나 이거 내용을 보면 다음과 같다.


@echo off

C:
chdir C:\cygwin\bin

bash --login -i #혹은 bash --login -i -c ./sx.sh

이거를 응용해서 rxvt,bat를 하나 만든다 (xterm용)


@echo off

C:
chdir C:\cygwin\bin

rxvt.exe -tn xterm -rv -sr -sw -bg gray -fg black -sl 1000 -sbt 15 -fn "Dotumche" -e /bin/bash --login -i

rxvt의 각 항목의 값들이 궁금하다면 cygwin에서 rxvt --help를 해보면 알 수 있다.  대충 xterm으로 띄우는데 scrolling이 가능하도록 하고 검은 배경에 회색글씨를 쓰겠다... 폰트는 Dotumche를 쓰겠고.. 뭐 이런 거다.

이게 끝난 다음에 만든 rxvt.bat를 실행시키면 익숙한 shell prompt를 확인할 수 있다.

cygwin에서 개발하려면 다른 editor도 있겠지만, 아무래도 vim을 가장 많이 사용하지 않을까 싶다.  cygwin에서 vim을 사용하려면 이거저거 걸리는게 많다.  일단 기본적으로 설정 파일이 없기 때문에 원 리눅스에서의 컬러풀(?)한 터미널을 기대하면 안된다.  또 한글입력에 문제가 많아서 요거 2가지 처리를 해줘야 한다.

먼저 vim을 설정해야 되는데, 항목이 워낙 많으니 그냥 /usr/share/vim/vim71/vimrc_example.vim을 home 디렉토리에 .vimrc로 복사하고, 좀 손을 봐준다.  쭉 내리다보면 다음과 같은 부분이 있다.


if has("vms")
  set nobackup
else
  set backup
endif

요 부분을 주석처리한다.  vimrc에서의 주석은 " (double quotation mark)를 맨 앞에 붙여주면 된다.  이거 안하면 저장하고 나올때마다 backup 파일이 생기는 짜증나는 (필요하긴 하지만) 현상을 목격하게 된다.  어쨌거나 이거 됐으면 다음 작업을 진행한다.  역시 .vimrc에 다음과 같은 항목을 추가하여 준다.


set fileencoding=euc-kr
set encoding=cp949

vi에서 한글을 사용하기 위한 설정이다.  이렇게 다 됐으면 저장하고 다시 vi로 아무 c파일이나 짜본다.


#include <stdio.h>

int main (void)
{
  printf ("헬로, 시그윈 월드\n");

  return 0;
}

잘 된다.  하지만 이렇게 하면 vim에서만 한글이 잘 보일뿐, 막상 쉘에서 ls해보면 잘 안나온다.  요것도 수정해야 하는데, 홈 디렉토리에 .bash_profile을 다음과 같은 내용을 추가한다.


alias ls='ls -F --color=auto --show-control-char'

쉘에서 ls를 해도 한글이 무리 없이 잘 나오게 된다.  후아... 이정도 했으면 큰 문제 없이 cygwin을 사용할 수 있을 것 같다.  헌데, 작업하다보면 새로운 terminal을 띄워야 할 때가 있는데 이때마다 마우스로 손이 가는건 상당히 부하가 큰 작업(-_-?)이다.  요거를... 키보드에서만 해결하도록 다음과 같은 alias도 하나 추가한다.


alias rxvtTerm='/cygdrive/c/cygwin/bin/rxvt -tn xterm -rv -sr -sw -bg gray -fg black -sl 1000 -sbt 15 -fn "Dotumche" -e /bin/bash --login -i &'

이러면 그냥 쉘 프롬프트에서 rxvtTerm을 실행시켜서 새로운 xterm 하나를 더 얻을 수 있게 된다.

첨부파일: Cygwin.bat .cshrc cyg-wrapper.sh sx.sh
게시물: 103 건, 현재: 1 / 2 쪽
번호 제       목 작성자 등록일 방문
106  arithmetic in a makefile, shell pwd export JMJS 17.9.8 596
105  Split and merge large files JMJS 16.3.21 573
104  [Makefile]random JMJS 14.12.5 871
100  윈도우7 용량부족 winsxs 폴더 최적화 JMJS 14.10.14 1775
99  [sh,csh]while loop JMJS 13.2.6 1954
98  hostname, hostid, /sbin/ifconfig eth0 JMJS 13.1.4 3717
97  [linux]fedora 16 gome-shell extension JMJS 12.3.12 1603
96  [linux]fedora 16 grub boot order change JMJS 12.3.10 1897
95  [linux]fedora Input Method,ibus,hangul JMJS 12.3.8 1588
94  [linux]audio,mp3,mplayer,gstreamer,vlc JMJS 12.3.7 2019
93  [sh].wrapper example JMJS 11.6.15 1731
92  [make]for loop JMJS 11.9.8 1580
91  [make]conditional expression JMJS 11.5.12 1499
90  [make]shell 실행 JMJS 11.3.9 1589
89  [wish]jplot JMJS 10.5.12 1262
88  yum JMJS 09.8.12 1319
87  [CYGWIN]X setup하기 JMJS 10.8.6 2454
86  [Make]Makefile Brief JMJS 10.8.6 1301
85  ldd /user/bin/xterm JMJS 09.4.24 1021
84  [HTML]어도비 SVG 뷰어와 HTML JMJS 09.4.24 1539
83  [DOS]DOS command JMJS 09.7.20 1242
82  [DOS]DOS command brief JMJS 07.2.21 1680
81  웹페이지 소스보기 JMJS 09.4.24 1224
80  [html]자동으로 글자색 바뀜 JMJS 07.1.10 1198
79  [html]복사, 드래그 금지 JMJS 07.1.10 1672
78  [csh]cshell에서 function 못쓴다네요 JMJS 11.3.17 1168
77  리눅스에서 i386,i586,i686, x86의 차이점 JMJS 06.10.16 1507
76  [CSH]$status JMJS 06.8.21 992
75  [sh]substr, read, until,IFS,for,dirname JMJS 14.12.19 1189
74  [sh]rgbview.sh . hello.sh JMJS 10.11.30 1103
73  automount - /etc/fstab JMJS 06.2.23 1132
72  lmutil.csh JMJS 05.11.8 1446
71  화일이름에 못오는 문자 JMJS 05.9.8 1197
70  /usr/ucb /usr/ccs JMJS 05.9.5 1113
69  Solaris Version JMJS 05.9.5 1337
68  /usr/ccs/bin/nm -x debpli.so JMJS 05.8.31 1591
67  tar, gzip, zcat, uncompress, mn(.a 파일보기) JMJS 13.1.6 1445
66  find . -name -print -exec perl JMJS 09.4.17 1412
65  pkgadd -d packagefile JMJS 05.5.9 1168
64  prstat JMJS 08.10.2 1395
63  vi 명령어, vim명령어 gvim JMJS 11.2.11 4065
62  multiple directory 에서 grep ? JMJS 04.5.31 1565
61  [csh].cshrc_axis JMJS 04.5.14 1462
60  [csh].cshrc_modelsim JMJS 04.5.14 1539
59  [csh].cshrc_cadence JMJS 04.5.14 1598
58  [csh].cshrc_novas JMJS 04.5.14 1476
57  [csh].cshrc_verisity JMJS 04.5.14 1828
56  lmgrd JMJS 09.6.22 2196
55  [csh]which case JMJS 04.5.14 1466
54  [bash]example 2 JMJS 04.5.12 1563
53  [bash]example 1 JMJS 04.5.12 1538
52  fedora 12에서 touchpad disable JMJS 11.1.17 1634
51  [Perl]한국어 인코딩 JMJS 04.1.16 2383
50  [Perl]HTML에서 기호 표시를 위한 문자치환 JMJS 04.1.5 9205
49  [csh]make awk JMJS 03.6.6 1796
48  [csh]wordsplit JMJS 03.6.6 1482
47  [csh]vi2 JMJS 03.6.6 1303
46  [csh]cat.csh JMJS 03.6.6 1391
45  [csh]chgword.csh JMJS 03.6.6 1283
44  [bash]password JMJS 11.3.9 1250
43  [Tcl]bi2int JMJS 02.11.29 1245
42  [PC]ask 검색창이 자꾸 뜬다면 JMJS 09.4.24 1666
41  [csh]backup_copyc.csh; foreach; continue JMJS 09.4.24 1418
40  uname, uname -s -r, uname -p, uname -a JMJS 09.4.24 1601
39  [tk]새 창 열고 닫기 예제 JMJS 09.4.24 11203
38  [sh]if [[ "$abc" == "abc" && "$bbc" == "bbc" ]]; ... JMJS 11.3.17 1303
37  [expect]expect_scp.exp JMJS 11.3.9 1403
36  ssh -x -l soc lion scp -r ... JMJS 11.3.9 1201
35  TclTk 배열 JMJS 09.7.20 1284
34  ./configure make make install JMJS 11.1.13 1203
33  [csh]diff JMJS 10.7.14 1283
32  tr abc 123 < file1 > file2 JMJS 11.4.11 1218
31  Installing RPMforge JMJS 10.2.8 1281
30  [태그]글자색이 사라짐 JMJS 09.4.24 1374
29  [태그]자동으로 글자색이 변함 JMJS 09.4.24 1357
28  글자태그 모음 JMJS 09.4.24 1464
27  색상명과 RGB값 표 JMJS 09.4.24 1506
26  RGB 색상표 JMJS 09.4.24 1659
25  한글특수문자표 JMJS 09.4.24 1288
24  bc -l JMJS 01.5.22 1217
23  file *,  od -xc *, cat * JMJS 01.3.28 1535
22  Linux Memo JMJS 09.7.20 1413
21  xterm -fn 10x20 & JMJS 12.3.7 1267
20  W/S Tip JMJS 09.4.29 1328
19  [awk]example JMJS 10.10.30 1533
18  [csh].cshrc JMJS 11.6.21 1842
17  stop & background job JMJS 00.11.14 1199
16  W/S shout down JMJS 00.11.14 1219
15  [sed]example JMJS 16.9.5 1559
14  [DOS]Memo JMJS 00.10.29 1316
13  [csh]리스트를 만들어 foreach로 처리할때 JMJS 00.10.7 4252
12  [Tcl]Tool Command Language JMJS 09.7.24 2404
11  [csh]vi.csh JMJS 00.6.27 1332
10  [csh]Check Process JMJS 00.6.27 1229
9  [csh]Get Character and get char without 'return' JMJS 10.2.8 1366
8  [csh]foreach SED JMJS 00.6.27 1579
7  [Window]오류보고 안 뜨게하는 방법 JMJS 09.9.23 1274
6  [csh]echo.csh JMJS 00.6.27 1433
5  set DDD = `date '+%y%m'` JMJS 00.6.27 1200
4  [SH]Advanced Bash-Scripting Guide JMJS 09.4.24 1159
[1] [2]