-
Bash에서 사용자 자동 완성 기능 개선하기Programmer/Computer Skills 2019. 4. 4. 18:35
Ubuntu Linux의 bash의 자동 완성은 /etc/bash_completion.d/ 아래 위치한다.
rustup의 공식 저장소에서는 자동 완성 기능을 활성화 하는 방법을 아래와 같이 안내하고 있다. 1rustup completions bash > /etc/bash_completion.d/rustup.bash-completion
위 방법은 일반적인 Rust 설치 권한 이상을 요구하는 문제가 있다.
Rust를 대개 개인의 홈디렉토리에 설치한다. 2
즉, 관리자 권한이 없어도 설치하고 사용할 수 있다.
반면, /etc/bash_completion.d/ 디렉토리는 관리자 권한을 요구한다. 3간단한 해결 방법으로는, ~/.bash_completion 파일에 추가하는 방법이 있다.
개인 명령어의 모든 자동 완성을 이 파일에 담는다.
당연히, 관리의 문제를 예상할 수 있다.
예를 들면, rustup을 갱신한 후에 ~/.bash_completion 파일에서 해당 부분을 손수 편집해야 한다.더 나은 방법으로, 개인에게도 /etc/bash_completion.d/ 디렉토리의 방식을 적용해보자.
우선 ~/.bash_completion 파일에 아래의 내용을 담는다.# -*- shell-script -*- # source user completion directory definitions user_dir=${BASH_COMPLETION_USER_DIR:-~/.bash_completion.d} if [[ -d $user_dir && -r $user_dir && -x $user_dir ]]; then for i in "$user_dir"/*; do [[ ${i##*/} != @($_backup_glob|Makefile*|$_blacklist_glob) \ && -f $i && -r $i ]] && . "$i" done fi unset user_dir i _blacklist_glob
이제 자동 완성 파일을 ~/.bash_completion.d/ 디렉토리에 저장한다.
아까 rustup의 예를 들면, 다음과 같다.rustup completions bash > ~/.bash_completion.d/rustup.bash-completion
CentOS Linux의 bash 자동 완성
CentOS에서는 bash-completion, bash-completion-extras를 설치해야 한다.
sudo yum install bash-completion bash-completion-extras
~/.bashrc 파일에 아래 내용을 추가한다.
# enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bashrc and /etc/profile # sources /etc/bashrc). if ! shopt -oq posix; then if [ -f /etc/profile.d/bash_completion.sh ]; then . /etc/profile.d/bash_completion.sh fi fi
이후 내용은 Ubuntu Linux의 그것과 같다.
Mac의 bash 자동 완성
Mac의 bash에서 자동 완성은 brew로 bash-completion를 설치해야 한다.
brew install bash-completion
설치 후에 ~/.bash_profile 파일에 아래 내용을 추가한다.
# Enable programmable completion features if ! shopt -oq posix; then if [ -f /usr/local/etc/profile.d/bash_completion.sh ]; then . /usr/local/etc/profile.d/bash_completion.sh elif [ -f ~/.bash_completion ]; then . ~/.bash_completion fi fi
이후 내용은 Ubuntu Linux의 그것과 같다.
'Programmer > Computer Skills' 카테고리의 다른 글
Mac OS X BASH의 프롬프트에 컬러 적용하기 (0) 2019.04.26 'ps aux'와 'ps -ef'의 차이 (0) 2018.02.13 Ubuntu 16.04에서 Python 3.6 사용하기 (2) 2018.02.12 쉘스크립트에서 안전하게 문자열(string)을 비교하는 방법 (0) 2016.09.30 CentOS 6에서 eclipse가 죽는 문제 해결하기 (0) 2015.02.27 댓글