2008-09-19 17 views
14

W bash zmienne środowiskowe będzie zakładka rozwinąć poprawnie, gdy umieszczone po polecenia echo, na przykład:W bash zmienne środowiskowe nie kartę rozszerzający poprawnie

echo $HOME 

Ale po cd lub kot, bash umieszcza \ przed znakiem $, tak jak poniżej:

cd \$HOME 

Gdybym użyć zmiennej jako drugi argument do polecenia, to nie będzie w ogóle rozwinąć:

cp somefile $HOM 

Jaką tajemniczą opcję mam w moim pliku .bashrc lub .inputrc, który sprawia mi taki stres?

+0

nie kwestia programowania –

+4

Scripting jest programowanie! – ColinYounger

+0

Byłoby bardzo pomocne wiedzieć, która dystrybucja Linuksa lub który wariant Unix używasz. – ehdr

Odpowiedz

4

Spróbuj kompletny -r cd usunąć specjalną programową funkcję dopełniania, że ​​wiele dystrybucji Linuksa zainstalować na komendę cd. Funkcja dodaje wyszukiwanie listy katalogów określonych w zmiennej CDPATH do uzupełnień tab dla cd, ale kosztem złamania domyślnego zachowania zakończenia.

Aby uzyskać więcej szczegółów, patrz http://www.gnu.org/software/bash/manual/bashref.html#Programmable-Completion.

3

Dla drugiej instancji można nacisnąć klawisz ESC przed tab, aby go rozwiązać.

nie wiem rozwiązanie swojego problemu, ale można spojrzeć w /etc/bash_completion lub pliki pod /etc/bash_completion.d ustalić, co nakazuje używanie autouzupełnianie i jak.

help complete 

Może być również pomocny.

1

The Bash Reference Manual ma więcej informacji, niż można chcieć w erracie ekspansji.

Section 8.7 wygląda na to, że to będzie miejsce do rozpoczęcia. Podaje informacje o funkcji "kompletnej", między innymi.

4

To, co opisujesz, to "funkcja" introduced in bash 4.2. Więc nie masz żadnej tajemniczej opcji powodującej cierpienie, ale tylko "zamierzonego" zachowania.

Uważam, że jest to bardzo denerwujące, ponieważ wolałem go tak, jak dawniej i nie znalazłem jeszcze żadnych opcji konfiguracyjnych, aby przywrócić wcześniejsze zachowanie. Gra z opcjami complete sugerowana przez inne odpowiedzi nigdzie mnie nie doprowadziła.

+3

To jest poprawna odpowiedź; rzeczy o autouzupełnieniu naprawiają symptomy, a nie przyczynę. Sklep "direxpand" jest na dobrej drodze, aby rozwiązać ten problem. – Nelson

0

Odpowiadam na 4-letnie pytanie! Fantastyczny!

To jest błąd/funkcja basha, która została niezamierzenie wprowadzona w wersji 4.2 i przez długi czas była niezauważalna. Zostało to wskazane przez geirha w this tread. Potwierdzono jako niezamierzoną funkcję here

Natrafiłem na ten problem podczas uruchamiania Ubuntu w domu. W pracy mam bash-3,00, więc spędziłem trochę czasu przeglądając, aby zobaczyć, co się dzieje. Zastanawiam się, czy mogę "obniżyć" ....

Powiązane problemy