2022년 12월 18일 일요일

Windows - gnuwin32 명령어 설정

참고

https://github.com/bjtj/emacs-init/blob/69e84c764414bcc4d553f486460b7385cd9071c9/.emacs#L216-L230

 

gnuwin32

https://gnuwin32.sourceforge.net/

윈도 포팅된 gnu 명령 프로그램 모음 (예: find, grep, diff 등)

전체 목록

 

특정 폴더 (예: C:\dev\xplatform) 에 리눅스 폴더 구조로 관리 하고 있음

e.g.) C:\dev\xplatform\bin 에 실행 파일들이 위치함

 

emacs program 설정 방법

예를 들어 emacs 는 system 의 find 또는 grep 명령을 통해 파일 탐색 동작을 한다.

find 는 윈도에도 같은 이름의 명령이 있지만 gnu find 명령과 입력 동작 방식이 다르다.

grep 은 기본적으로 윈도에 존재하지 않는다.

이런 경우 emacs 가 gnuwin32 의 find 와 grep 을 사용하도록 설정할 수 있다.


.emacs 예


(when (eq system-type 'windows-nt)
  (setenv "PATH"
          (concat
           "C:/dev/xplatform/bin;"
           (getenv "PATH")))
  (setq exec-path
        (append
         '("C:/dev/xplatform/bin")
         exec-path))
  (setq find-program "C:/dev/xplatform/bin/find.exe")
  (setq grep-program "C:/dev/xplatform/bin/grep.exe"))


  • (when (eq system-type 'window-nt) 부분은 windows 환경인 경우에만 실행하도록 확인하는 부분
  • (setq find-program "...")(setq grep-program "...") 부분이 find 와 grep 명령 위치를 설정하는 부분

 

PATH 를 지정하는 부분도 있는데 윈도 내장 명령의 경우 모든 PATH 의 우선인 경우가 있어서 위와 같이 직접적으로 일일이 설정해야 제대로 동작할 수 있다.

(setenv "PATH"
        (concat
         "C:/dev/xplatform/bin;"
         (getenv "PATH")))
(setq exec-path
      (append
       '("C:/dev/xplatform/bin")
       exec-path))