ELisp에서 실행중인 OS Emacs를 프로그래밍 방식으로 어떻게 확인합니까?
.emacs
OS 에 따라 다른 코드를 실행하고 싶습니다 .
답변:
system-type
변수 :
system-type is a variable defined in `C source code'.
Its value is darwin
Documentation:
Value is symbol indicating type of operating system you are using.
Special values:
`gnu' compiled for a GNU Hurd system.
`gnu/linux' compiled for a GNU/Linux system.
`darwin' compiled for Darwin (GNU-Darwin, Mac OS X, ...).
`ms-dos' compiled as an MS-DOS application.
`windows-nt' compiled as a native W32 application.
`cygwin' compiled using the Cygwin library.
Anything else indicates some sort of Unix system.
elisp를 처음 사용하는 사람들을 위해 샘플 사용법 :
(if (eq system-type 'darwin)
; something for OS X if true
; optional something if not
)
progn
필요한 개행 문자로 구분되는 경우 및 기타 부분 ) . 이 단점에 익숙하지 않은 모든 사람에게 권장 사항- 이 답변 을 확인하십시오 .
progn
다른 경우가 없다면 @ kermit666은 실제로 필요하지 않습니다. 내가 의미하는 바는 when
대신에 그냥 사용할 수 있다는 것입니다 if
. 이것은 다음과 같습니다.(if ... (progn ...) '())
cond
과 같이 :(case system-type ((gnu/linux) "notify-send") ((darwin) "growlnotify -a Emacs.app -m"))
case
아니야 cond
. case
이후 작동 system-type
과 같은 상징 'gnu/linux
하거나 darwin
,하지 문자열
이제 Windows 용 Linux 하위 시스템 (Windows 10의 bash) system-type
도 gnu/linux
있습니다. 이 시스템 유형을 감지하려면 다음을 사용하십시오.
(if
(string-match "Microsoft"
(with-temp-buffer (shell-command "uname -r" t)
(goto-char (point-max))
(delete-char -1)
(buffer-string)))
(message "Running under Linux subsystem for Windows")
(message "Not running under Linux subsystem for Windows")
)
이것은 대부분 이미 답변되어 있지만 관심있는 사람들을 위해 FreeBSD에서 이것을 테스트했고보고 된 값은 "berkeley-unix"였습니다.
system-configuration
빌드 시스템의 차이를 조정하려는 경우 ( 최소한 24-26 버전에서는)도 있습니다. 그러나이 변수의 문서는 system-type
변수 문서처럼 포함 할 수있는 가능한 값을 설명 하지 않습니다.