僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
etch$ set | wc -l 48 etch$ set | grep BASH BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="3" [1]="1" [2]="17" [3]="1" [4]="release" [5]="i486-pc-linux-gnu") BASH_VERSION='3.1.17(1)-release' CHROOT_KNOPPIX# set | wc -l 4396 CHROOT_KNOPPIX# set | grep BASH BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() BASH_COMPLETION=/etc/bash_completion BASH_COMPLETION_DIR=/etc/bash_completion.d BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="3" [1]="00" [2]="16" [3]="1" [4]="release" [5]="i386-pc-linux-gnu") BASH_VERSION='3.00.16(1)-release' xspec=$amp;( sed -ne '/^complete .*[ ]'$amp;{1##*/}'\([ ]\|$amp;\)/{p;q;}' $amp;BASH_COMPLETION );
KNOPPIXのbashには山ほど関数が入ってる。お化けだ。
なにやら/etc/bash_completionにオプション補完の秘密がありそうだ。
bash_completionでぐぐってあっさり。プログラマブル補完というわけか。
/etc/bash_completion にないコマンド(fdisk(8)とか)は、オプションは補完されない。
CHROOT_KNOPPIX# grep -n "^# [a-z]*(.*completion.*$" \ /etc/bash_completion | head -n5 536:# chown(1) completion 569:# chgrp(1) completion 601:# umount(8) completion. This relies on the mount \ point being the third 617:# mount(8) completion. This will pull a list of \ possible mounts out of 719:# man(1) completion
createdb(1)とかautorpm(8)とかまで定義している執念には呆れるしか。
--prefix=$HOME/work でbashなどを入れ、KNOPPIXから頂戴したファイルを /etcの下にコピーし、bashの初期化ファイルを編集し、 chroot $USER/work /bin/bash --init-file hoge とかやった。
試行錯誤の末、エラーメッセージだけは出なくなったが、プログラマブル補完
なるものは、まだ有効にできなかった。
orz
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。