ubuntu의 update-alternatives
update-alternatives - maintain symbolic links determining default commands
우분투에서는 update-alternatives
를 통해 특정 명령에 대해 대표 프로그램을 실행하도록 되어 있는데, 예를 들어 우분투를 설치하고 난 뒤 실행하는 vim
은 어떻게 실행하는 것일까?
$ which vim
/usr/bin/vim
$ ls -la /usr/bin/vim
lrwxrwxrwx 1 root root 21 6월 11 14:37 /usr/bin/vim -> /etc/alternatives/vim
vim은 vim을 실행하는 것이 아니라 /etc/alternatives/vim
을 실행하도록 되어 있다. 그러면 alternatives에서는 뭘 쓰는걸까?
$ ls -la /etc/alternatives/vim
lrwxrwxrwx 1 root root 28 6월 11 14:41 /etc/alternatives/vim -> /usr/local/bin/nvim.appimage
$ ls -la /etc/alternatives/vi
lrwxrwxrwx 1 root root 18 6월 11 14:37 /etc/alternatives/vi -> /usr/bin/vim.basic
$ ls -la /etc/alternatives/editor
lrwxrwxrwx 1 root root 28 6월 11 15:27 /etc/alternatives/editor -> /usr/local/bin/nvim.appimage
/etc/alternatives
역시 다른 실행파일을 단순히 가리키는 것으로 되어 있다. 따라서 우분투 위에서 vim을 실행한다는 것은 결국 /etc/alternatives가 가리키는 실행 파일을 실행한다는 것이다. 이를 어떻게 변경하는가 하면,
$ sudo update-alternatives --config vimdiff
대체 항목 vimdiff에 대해 (/usr/bin/vimdiff 제공) 2개 선택이 있습니다.
선택 경로 우선순� 상태
------------------------------------------------------------
0 /usr/local/bin/nvim.appimage 100 자동 모드
1 /usr/bin/vim.basic 30 수동 모드
* 2 /usr/local/bin/nvim.appimage 100 수동 모드
Press <enter> to keep the current choice[*], or type selection number:
이와 같이 update-alternatives
를 사용해서 변경할 수 있다. 즉, update-alternatives
를 사용해서 vimdiff
라는 대표 프로그램을 어떤 것으로 실행할지 정한다는 것.
그래서 update-alternatives
는 vi
를 vi가 아닌 대표적인 텍스트 에디터라고 보고, 이 텍스트 에디터에 알맞은 프로그램을 연결시켜 주는 역할을 한다는 것.
$ sudo update-alternatives --install /usr/bin/vim vim /usr/local/bin/nvim.appimage 100
그래서 neovim
을 vim대신 사용하고 싶다면, 위와 같이 --install
명령을 통해 --config
의 후보가 되도록 추가해 주어야 한다.
# man update-alternatives
--install link name path priority [--slave link name path]...
물론 이렇게 하지 않고 직접 링크를 변경해서 사용할 수도 있다. 나도 물론 그렇게 쓰긴 했는데, 나중에는 결국 관리가 안되서 더 불편할 것 같기도 하다.