OSX의 시스템 환경 설정이나 기타 앱의 환경 설정은 사실 허무하리만치 간단해서 설정을 바꿀 수 있는 부분이 제한되어 있다. 이는 애플의 UI 정책도 한 몫하고 있지만 사실 OSX와 여러 맥용 앱은 그보다 더 많은 기능들을 내장하고 있는 것이 사실이다. 이런 설정은 defaults라는 터미널 명령을 사용하여 변경할 수 있는데, 아무래도 터미널 자체가 좀 무서운(?) 물건이다보니 초보자들이 다가가기에는 쉽지 않은 것이 사실이다.
이 글에서는 OSX의 각종 환경 설정을 손 볼 수 있는 defaults 명령에 대해서 알아보도록 한다.
defaults 사용법
문법
defaults 명령의 주요 패턴은 다음과 같다. ( 대괄호로 둘러싸인 부분은 넣어도되고 빼도 되는 부분이다)
defaults [호스트] 액션 [도메인] 키 [-타입] [값]
호스트는 시스템을 의미하는데 원격 시스템에 대한 설정을 이 명령으로 바꿀 수 있다. 기본적으로는 현재 로그인한 currentHost의 설정을 바꾼다고 보면 된다.
액션
환경설정 내용에 대해 어떤 동작을 취할 것인지를 결정한다.read, read-type, write, delete로 읽고 쓰고 지울 수 있으며, find 액션으로 전체 환경 설정 내용 중에서 특정한 키나 값을 찾는 것도 가능하다.
- read 도메인 [키] : 지정한 도메인 혹은 도메인 내의 키의 값을 출력한다.
- read-type 도메인 키 : 지정한 키의 값의 유형을 알아낸다.
- write 도메인 키 [타입] 값 : 지정한 키를 지정한 값으로 쓴다.
- rename 도메인 예전이름 새이름 : 지정한 도메인 내의 예전이름의 키를 새 이름으로 이름을 바꾼다.
- delete 도메인 [키] : 특정한 도메인 내의 키 혹은 도메인 전체의 설정 내용을 삭제한다. (주의 : 도메인 이름까지만 입력하고 엔터치면 전체 설정이 홀랑 날아간다. 단, 이렇게 내용을 날려버리면 해당 앱을 실행하면 초기 값으로 복원되니 참고할 것)
- domins : 전체 도메인 목록을 출력한다.
- find [찾을 단어] : 환경 설정 내용에서 특정 단어를 검색한다.
도메인
도메인은 어떤 것과 관련된 환경 설정인지에 대한 범위를 지정한다. 인터넷 도메인주소와 반대방향으로 com.회사이름.앱이름 의 순으로 연결된다. 파인더의 환경 설정에 접근하고자 한다면 com.apple.finder 라고 도메인을 지정하면 된다. 또한 -g 옵션을 쓸 수 있는데 이는 NSGlobalDomain과 같은 뜻으로 전체 앱에 공통으로 적용되는 설정을 의미한다.
키
키는 환경 설정 데이터 내에서 특정한 기능과 관련되는 데이터를 가리키는 이름이다. 예를 들어 파인더에서 숨김 파일을 표시할 것인지의 여부를 결정하는 부분이 있는데, 이 부분을 가리키는 키가 바로 AppleShowAllFiles 이다. 키는 대소문자를 구분한다.
키는 응용 프로그램에서 어떤 동작을 어떻게 처리할 것인지를 결정할 때 참고하는 값이고, 따라서 이미 응용 프로그램을 만들 때 정의되어 있는 내용이다. 사용자가 임의의 키를 만드는 것은 가능하지만 그것이 응용 프로그램 동작에는 당연히 반응하지 않을 수 있다.
타입
도메인 내에 각 키는 값의 타입을 가진다. 예를 들어 2라는 숫자가 있을 때 이 것이 2라는 정수값을 의미할 수도 있고, 그냥 “2”라는 글자로서의 숫자를 의미할 수도 있다. 이는 완전히 다른 개념이고, 특정한 키는 그에 상응하는 타입을 가지고 있다.
타입을 지정할 때에는 타입명 앞에 – (하이픈/ 빼기기호)을 넣는다. 또한 타입이 생략되면 defaults는 이 값의 유형이 ‘문자열’이라고 인식한다.
타입에는 다음과 같은 것들이 있다.
- -int : 정수
- -float : 소수점이 있는 실수
- -bool : YES or NO
- -string : 문자열
- -array : 여러 값이 집합으로 구성된 배열. ‘{ 값1 값2 값3 …;}’ 과 같은 식으로 쓴다.
- -array-add : 배열을 값으로 갖는 키에 기존 배열에 추가하여 값을 더 넣을 때 사용하는 타입
- -dict : 키-값 쌍으로 이루어진 사전 데이터.'{ 키1 값1 키2 값2 ;}’ 와 같은 식으로 쓴다.
- -dict-add : -array-add 와 비슷하게 동작함
값
값은 키에 대응되는 값 자체를 말한다.
변경의 적용
앱이 실행 중인 상태에서 환경 설정 값을 변경하는 것은 보통 바로 적용되지 않는다. (보통은 앱이 처음 실행될 때 환경 설정을 한 번만 읽어들이도록 만들어지기 때문이다.) 따라서 Dock이나 Finder와 같이 항상 실행되는 앱은 터미널에서 강제 종료하여 재시작하면 변경 사항을 적용시킬 수 있다. 그외 특정 환경 설정은 로그온 시에 읽어들이므로 그런 경우에는 로그오프 후 다시 로그온 하거나 재부팅하면 적용된다.
예제
파인더에서 숨김 파일을 보기 위해서는 숨김 파일 표시와 관련된 키 값을 설정해주면 된다. 이 키는 AppleShowAllFiles 이며 타입은 -bool 타입이다. 따라서 다음과 같이 변경할 수 있다.
$ defaults write com.apple.finder AppleShowAllFiles -bool YES
이 변경 사항을 적용하려면 파인더를 강제로 재시작한다.
$ killall Finder
위 두 명령은 세미콜론으로 붙여 한 줄에 쓸 수도 있다.
$ defaults write com.apple.finder AppleShowAllFiles -bool YES; killall Finder
환경 설정 파일
이런 앱들의 환경설정은 주로 ~/Library/Preferences 폴더에 각 도메인 별로 파일로 저장된다. 예를들어, 파인더의 사용자별 환경 설정은 사용자의 ~/Library/Preferences/com.apple.finder.plist 라는 파일로 기록된다. 이 파일을 보기 위해서는 파인더에서 메뉴 > 이동 > 폴더로 이동… 을 선택한 다음 ~/Library 라고 입력하고 Preferences 폴더 속을 뒤져보면 된다.
실제로 파인더의 환경 설정 패널을 열고 값을 바꾸면 해당 내용이 이 파일에 기록된다. defaults 명령은 이 plist 파일을 직접 수정하도록 하는 명령이다.