linux bash错误,linux – Bash完成抛出语法错误

问题:

假设我正在尝试更改为名为“build”的目录,该目录位于我当前所在的目录中.我开始:

cd b

然后我按Tab键一次(知道当前的目录中没有其他目录以字母b开头).我希望能看到以下内容,随时准备让我根据需要点击返回或更改或扩充.

cd build

但是,在运行Linux Peppermint 3的上网本上,我发现按下标签按钮会出现这种情况:

cd bbash: command substitution: line 74: syntax error near unexpected token `done'

bash: command substitution: line 74: ` done'

我试过的事:

>我已经尝试重新安装“bash-completion”软件包,但这没有明显的效果.

>我已经查看了文件/ etc / bash_completion,特别是在第74行,但我看不出任何明显需要纠正的内容(完成-f -X’* .Z’压缩znew).也许我在找错了文件.

>我发现git,gedit和节点等命令的完成没问题.但是尝试为kate自动完成文件名也不起作用.

>当我运行bash -x进行调试时,在终端中打印了很多代码,最后一点(请注意注释):

+ toks=(${toks[@]-} $(

compgen -d -- "$quoted" | {

while read -r tmp; do

# TODO: I have removed a "[ -n $tmp ] &&" before 'printf ..',

# and everything works again. If this bug suddenly

# appears again (i.e. "cd /b" becomes "cd /"),

# remember to check for other similar conditionals (here

# and _filedir_xspec()). --David

printf '%s\n' $tmp

done

}

))

bash: command substitution: line 74: syntax error near unexpected token `done'

bash: command substitution: line 74: ` done'

我尝试添加后面提到的条件,但这没有效果.

>我试过暂时删除etc / bash_completion.d但这没有效果.

>我已经尝试完成-p来查看完成列表,但我真的不知道我在寻找什么.

一个最后的PLEA

如果需要的话,我愿意用shell脚本弄脏自己.在此过程中,我可以了解更多相关信息.我真的会修复它.任何建议赞赏.

解决方法:

Bash完成是模块化的;不同的包提供自己的完成扩展.另一个包可能包含bug.试试mv /etc/bash_completion.d{,.old},看看是否能修复它.如果是这样,请执行mv /etc/bash_completion.d{.old,}将其再次移回,然后将各个文件逐个移出/etc/bash_completion.d目录,以识别导致问题的文件. (在Peppermint上,目录可能被称为略有不同.)

标签:bash,linux,shell

来源: https://codeday.me/bug/20190813/1649004.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值