トップ «前の日記(2006-10-29(Sun)) 最新 次の日記(2006-10-31(Tue))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2006-10-30(Mon) 鍵?

bash色々

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)とかまで定義している執念には呆れるしか。

chrootで試す

--prefix=$HOME/work でbashなどを入れ、KNOPPIXから頂戴したファイルを /etcの下にコピーし、bashの初期化ファイルを編集し、 chroot $USER/work /bin/bash --init-file hoge とかやった。

試行錯誤の末、エラーメッセージだけは出なくなったが、プログラマブル補完 なるものは、まだ有効にできなかった。
orz


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。