autouzupełnianie bash kończy się niepowodzeniem z symbolem wieloznacznym


1

Za pomocą bash w tym systemie:

Linux 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt20-1 + deb8u4 (2016-02-29) x86_64 GNU / Linux

Sekwencja:

cd /tmp
touch test1.txt && touch test2.txt && touch test3.txt
ls test [tab][tab]

Przedstawia:

test1.txt test2.txt test3.txt

poniżej linii poleceń.

Tak się spodziewałem bash autouzupełnianie, aby się zachowywać.

Ale kiedy piszę:

ls test* [tab][tab]

(spodziewając się tego samego wyniku) Dostaję tylko (tzn. autouzupełnianie rozszerza się do):

test1.txt

Więc gwiazdka ( * ) symbol wieloznaczny na końcu test[23].txt 'nieosiągalny'. Jestem pewien, że dwie sekwencje użyte do uzyskania tych samych wyników w poprzednich wersjach basha - przynajmniej na moim komputerze.

Czy ktoś inny ma ten problem? Czy jest to ustawienie domyślne (np. W Debianie 8), które można zmienić? (Próbowałem ustawić i rozbroić różne parametry powłoki za pomocą shopt ale bez skutku).

Odpowiedzi:


0

Cóż, rozwiązanie, które działa dla mnie, jest następujące: w ~/.bashrc Miałem linie

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
   if [[ -f /usr/share/bash-completion/bash_completion ]]; then
      . /usr/share/bash-completion/bash_completion
   elif [[ -f /etc/bash_completion ]]; then
      . /etc/bash_completion
   fi
fi

To blok, o którym myślałem, że zajmuje się autouzupełnianiem. Po skomentowaniu go i uruchomieniu nowej powłoki, nie tylko działa, ale wrócił do tego, do czego jestem przyzwyczajony!

Nadal nie wiem, co if -clause oznacza, ale nie spróbuję go naprawić, gdy działa.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.