[OSX] Defaults 명령 사용법

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 파일을 직접 수정하도록 하는 명령이다.