bash がチルダを展開しちゃって読みづらい。
vim ~/.bash<TAB> vim /home/takuya/.bashrc # 展開される。
この展開をやめさせる方法。
展開は2つで行われる。
ひとつは、 .inpurc の設定。
もうひとつは bash_completionの補完
.inputrc による展開の設定
takuya@~/Desktop$ bind -v | grep tilde 12:set expand-tilde off
ここがオフになっていることを確認する。
on の場合は、
echo "set expand-tilde off " >> ~/.inputrc
次に、bash_completion
bash_completion で _expand が定義されているのでソレを上書き
bash_completion には _expantion があるので、それが丁寧に展開してくれる。
takuya@~/Desktop$ type _expand _expand は関数です _expand () { if [[ "$cur" == \~*/* ]]; then eval cur=$cur; else if [[ "$cur" == \~* ]]; then cur=${cur#\~}; COMPREPLY=($( compgen -P '~' -u "$cur" )); [ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]}; return ${#COMPREPLY[@]}; fi; fi }
いまは、展開されたくないので、コレをオフにする。というか、上書きして無効化する。
echo "_expand () { return 0; }" >> ~/.bash_completion
これで、bash が ~/ を展開しなくなる。便利ね。
これ、ずっとinputrc だと思ってて、inputrc を設定したのにexpandが停止しないか謎だった。