Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

iTerm2 v3의 Automatic Profile Switching

맥용 터미널 앱으로 내가 애용하는 iTerm2의 새 버전인 v3가 나왔다. 공식 릴리스가 된 것으로 알고 있는데 이유는 모르겠지만, 공식 사이트에서는 아직 2.x가 다운받게 되어 있다.

이번 v3에는 많은 기능이 추가되었는데 그중에 Automatic Profile Switching라는 기능이 추가되었다.

iTerm2의 Profile 기능

iTerm2의 Profile 기능은 기존에도 있었는데 여기서 터미널의 색상이나 투명도, 인코딩 등 다양한 설정을 할 수 있다. Automatic Profile Switching은 이는 터미널의 사용자 이름, 호스트명, 경로에 따라 다른 프로파일을 적용해 주는 것이다.

서버 쪽 작업을 하다 보면 SSH로 다양한 서버를 접속하는 경우가 많은데 자동으로 연결이 끊기는 때도 있고 터미널 탭을 여러 개 띄워놓고 작업하다 보면 로컬인 줄 착각하고 명령어를 하는 경우가 많은데 이럴 때 프로파일을 다르게 적용하면 터미널이 직관적으로 다르게 보이므로 이런 실수를 줄일 수 있다.

iTerm2의 Automatic Profile Switching 시연 화면

직접 보는 게 이해가 편하므로 나는 위와 같이 설정을 했다. SSH로 서버에 접속하면 파란색 계열의 프로파일을 적용하고 root로 바꾸었을 때 빨간색 계열의 프로파일을 적용했다. 터미널 색상만 보아도 내가 어떤 위치에 있는지 구별할 수 있으므로 실수를 많이 줄일 수 있다. 회사에서는 다양한 서버에 접속하므로 더 다양하게 프로파일을 만들 수도 있겠지만, 개인 작업에서는 그냥 원격과 root, 로컬 정도만 구분하도록 했다.

설정 방법

Automatic Profile Switching을 사용하려면 먼저 iTerm2의 Shell Integration을 설치해야 한다.

iTerm2의 Install Shell Integration 메뉴

직접 설치할 수도 있지만 iTerm2 메뉴에서 Install Shell Integration를 클릭하면 다음과 같이 자동으로 명령어가 실행되면서 Shell Integration을 설치한다.

$ curl -L https://iterm2.com/misc/install_shell_integration_and_utilities.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2735  100  2735    0     0   9481      0 --:--:-- --:--:-- --:--:--  9596
Downloading script from https://iterm2.com/misc/bash_startup.in and saving it to /home/outsider/.iterm2_shell_integration.bash...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11696  100 11696    0     0  37981      0 --:--:-- --:--:-- --:--:-- 38473
Checking if /home/outsider/.bash_profile contains iterm2_shell_integration...
Downloading imgcat...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   253  100   253    0     0    815      0 --:--:-- --:--:-- --:--:--   826
100  1976  100  1976    0     0   2954      0 --:--:-- --:--:-- --:--:--  8165
Downloading it2dl...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   258  100   258    0     0    854      0 --:--:-- --:--:-- --:--:--   865
100   414  100   414    0     0    630      0 --:--:-- --:--:-- --:--:--   630
Adding aliases...
Done.
--------------------------------------------------------------------------------

The next time you log in, shell integration will be enabled.

You will also have these commands:
imgcat filename
  Displays the image inline.
it2dl filename
  Downloads the specified file, saving it in your Downloads folder.

이는 홈 디렉터리에 .iterm2_shell_integration.bash파일을 만들고 ~/.bash_profile에 다음의 코드를 추가한다.

test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

이제 터미널에 로그인할 때마다 .iterm2_shell_integration.bash가 실행되게 된다.

위 과정은 자신의 로컬머신(내 경우에는 내 맥북)에 설치한 것인데 Automatic Profile Switching를 사용하려면 사용하고자 하는 모든 서버와 사용자에 Shell Integration을 설치해야 한다. iTerm2는 터미널 프로그램일 뿐이므로 ServerA에 test라는 유저로 접속하면 이 사용자의 shell이 초기화되는데 이때 Shell Integration이 있어야 Automatic Profile Switching이 제대로 동작한다.

그래서 앞에서 동작 방식을 보여준 대로 outsider.ne.kr 서버에 outsider라는 계정으로 접속했으므로 여기서도 Shell Integration을 설치하고 sudo -iroot계정에 들어갔을 때도 Shell Integration을 한번 설치해서 모든 환경에 다 설치가 되어야 제대로 동작한다. 설치방법은 앞에서 한 것처럼 SSH로 접속하거나 Root로 계정을 바꾼 후 iTerm2 메뉴의 Install Shell Integration를 클릭하면 자동으로 설치가 된다.

Shell Integration가 모두 설치되었으면 이제 프로파일을 필요한대로 만든다.

Automatic Profile Switching을 위해 새로운 2개의 프로파일 추가

나 같은 경우 원격 SSH접속했을 때와 Root 계정용 프로파일을 2개 더 만들고 다른 설정은 좀 귀찮아서 배경색 정도만 바꾸어 주었다.

Profile의 Advanced 메뉴에서 Automatic Profile Switching 설정

프로파일 설정에서 Advanced에 가면 Automatic Profile Switching 부분이 있는데 여기에 프로파일이 전환되는 조건을 적어주면 된다.

사용할 수 있는 조건으로는 사용자명, 호스트명, 경로를 사용할 수 있다.

  • 사용자명은 root@, ubuntu@와 같이 적어준다.
  • 호스트명은 localhost, outsider.ne.kr와 같이 적어준다. 호스트명은 hostname -f로 나오는 이름을 사용하므로 서버에서 확인해 보면 된다.
  • 경로는 /users/george와 같이 지정할 수 있다.
  • 조합해서 사용하는 경우는 ubuntu@localhostubuntu@localhost:/users/george처럼 사용할 수 있고 호스트명이나 경로에서는 *도 사용할 수 있다.

경로는 필요성을 못 느껴서 사용해 보지 않았지만 사용자명과 호스트명이 둘 다 적용되면 호스트명쪽이 적용된다. 예를 들어 ServerA 호스트에 프로파일을 적용하고 root@도 적용한 경우 이 서버거 ServerA라면 root 계정이더라도 호스트 쪽 프로파일이 적용된다. 이때는 root@ServerA와 같이 조건을 더 자세하게 적용해 주어야 한다.

설정하는 게 좀 귀찮기는 하지만 설정해 놓고 서버에 접속하면서 사용해 봤는데 확실히 엄청 편하다.

2016/06/05 21:41 2016/06/05 21:41