4

Я давно установил в своих последних посещенных каталогах переменные оболочки d1, d2 и т.д.

На древней машине Fedora я мог набрать команду вроде

$ cp $ d1/

и оболочка заменит $ d1 текстом типа /home /acctname /projects /blog /, а затем покажет мне содержимое ... /blog, как вы ожидаете от завершения любой вкладки.

Теперь и ubuntu wheezy/sid, и fedora 16 просто \-пересекают '$', и, естественно, дополнений нет.

Вы можете увидеть это поведение в действии в окне терминала OSX. На 10.8 сделать что-то вроде

ls $ HOME/ чтобы понять, что я имею в виду.

Есть ли переменная оболочки bash или опция, которая может восстановить старое поведение?

man bash предполагает, что это ошибка:

   complete (TAB)
          Attempt  to  perform  completion  on  the  text  before  point.  Bash
          attempts completion treating the text as  a  variable  (if  the  text
          begins  with  $),  username (if the text begins with ~), hostname (if
          the text begins with @), or command (including aliases and functions)
          in  turn.   If none of these produces a match, filename completion is
          attempted.

Я получаю описанное выше завершение, когда токен начинается с '~' или буквы. Это просто «$» - завершение сломано.

2 ответа2

8

Начиная с bash 4.2, это поведение регулируется

shopt -s direxpand # enable
shopt -u direxpand # disable

См. Http://www.mail-archive.com/bug-bash@gnu.org/msg11251.html для справочной информации.

0

Не совсем уверен, если вы запрашиваете решение на вашем Mac или для * nix. Если вы спрашиваете об изменении вашего Mac, я просто пробежался по этому простому руководству, чтобы обновить мой OSX bash с

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.

в

GNU bash, version 4.3.42(1)-release (x86_64-apple-darwin15.0.0)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .