- 论坛徽章:
- 2
|
网上搜了一通,竟然解决了,发帖留念。
问题现象如下:
~$ ls .ba-sh: <( compgen -d -- '.ba' ): 没有那个文件或目录
-sh: <( compgen -f -X -- '.ba' ): 没有那个文件或目录
解决方法如下:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502804
=== modified file 'bash_completion'
--- bash_completion 2008-10-10 19:01:59 +0000
+++ bash_completion 2008-10-19 21:07:12 +0000
@@ -270,15 +270,23 @@
_expand || return 0
local toks=( ) tmp
- while read -r tmp; do
- [[ -n $tmp ]] && toks[${#toks[@]}]=$tmp
- done < <( compgen -d -- "$(quote_readline "$cur")" )
+ toks=( ${toks[@]} $(
+ compgen -d -- "$(quote_readline "$cur")" | {
+ while read -r tmp; do
+ [[ -n $tmp ]] && echo $tmp
+ done
+ }
+ ))
if [[ "$1" != -d ]]; then
xspec=${1:+"!*.$1"}
- while read -r tmp; do
- [[ -n $tmp ]] && toks[${#toks[@]}]=$tmp
- done < <( compgen -f -X "$xspec" -- "$(quote_readline "$cur")" )
+ toks=( ${toks[@]} $(
+ compgen -f -X "$xspec" -- "$(quote_readline "$cur")" | {
+ while read -r tmp; do
+ [[ -n $tmp ]] && echo $tmp
+ done
+ }
+ ))
fi
COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" )
... |
|