Bash variable expansion on tab complete

前端 未结 3 1813
长情又很酷
长情又很酷 2020-12-08 19:28

I\'m running Ubuntu 11.04, and I\'m seeing some odd behaviour when I try to use tab-completion in bash on a path that starts with a variable. If I\'ve got TOP=/scratch, and

相关标签:
3条回答
  • 2020-12-08 19:40

    The bug report refered to in other answers at bugs.launchpad.net gives a new workaround by issuing the command:

    shopt -s direxpand
    

    It works for me.

    0 讨论(0)
  • 2020-12-08 19:43

    Found the bug report, please register (if not already registered) and add yourself to the 'people affected' list, I just did:

    https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627

    Workarounds

    Try enabling direxpand or cdable_vars:

    shopt -s direxpand
    # or
    shopt -s cdable_vars
    

    Apparently EscTab might be a workaround:

    I haven't found a proper solution to this, but there's a workaround. The escaping of environment variables can be disabled by pressing Esc followed by tab.

    # cd $SO + [Esc] + [Tab]
    # cd $SOME_DIR
    

    Confirm that as a bug! I just confirmed that the same thing works on

    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 10.10
    Release:        10.10
    Codename:       maverick
    

    I get broken behaviour on (up-to-date) natty:

    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 11.04
    Release:    11.04
    Codename:   natty
    

    Although I must add that I do not the slash escaped, but the path (while valid, existing, accessible and readable) is not getting expanded.

    Info: https://help.ubuntu.com/community/ReportingBugs

    0 讨论(0)
  • 2020-12-08 19:44

    I was having a similar problem in cygwin (NT-6.1 2.0.1 2015-04-30) bash (GNU 4.3.33), especially when I would try to tab-expand a path that contained spaces.

    I put shopt -s direxpand in my ~/.bashrc. Problem solved.

    0 讨论(0)
提交回复
热议问题