LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 832|回复: 9

[已解决]怎么才能使得sudo 支持tab自动补全

[复制链接]
发表于 2011-11-29 13:36:00 | 显示全部楼层 |阅读模式
已经装了bash-completion,没家sudo可以tab自动补全,现在就差sudo 后面命令来个自动补全了
 楼主| 发表于 2011-11-29 13:51:57 | 显示全部楼层
问题已经解决 sudo eselect bashcomp enable --global gentoo
回复 支持 反对

使用道具 举报

发表于 2011-11-29 18:51:50 | 显示全部楼层
建议你用zsh, bash-completion是从zsh学过来的,不是一般的难用。

zsh的默认配置不太好用,可以试试我的,从sysrcd抄过来改的。
https://github.com/transtone/transconfig
emerge zsh zsh-completion 之后,将这里的 .zshrc 和 .zsh/ 文件夹复制到 home,然后 chsh 回车,输入 /bin/zsh 就可以了。
回复 支持 反对

使用道具 举报

发表于 2011-11-29 20:40:00 | 显示全部楼层
我也这样做了,但我只能补全目录,不能补全目录下的文件,不知道为什么
回复 支持 反对

使用道具 举报

发表于 2011-12-7 22:24:58 | 显示全部楼层
zsh有个这个问题,比如刚emerge新装了traceroute,产生了可执行文件/usr/bin/traceroute下,如果是bash的话,这时候直接trace然后tab就能补全了,zsh非要重开一个终端才行,关掉那个cache也不行。。
回复 支持 反对

使用道具 举报

发表于 2011-12-8 08:59:10 | 显示全部楼层
Post by iamkr;2156671
zsh有个这个问题,比如刚emerge新装了traceroute,产生了可执行文件/usr/bin/traceroute下,如果是bash的话,这时候直接trace然后tab就能补全了,zsh非要重开一个终端才行,关掉那个cache也不行。。

运行 source /etc/profile 呢?
bash应该也要source一下的吧。

这种情况还是很少见的吧,谁没事天天老emerge玩呀。
回复 支持 反对

使用道具 举报

发表于 2011-12-8 10:13:45 | 显示全部楼层
我记得bash-completion就是补全,但在sudo下还是不行的

要sudo的话
echo "complete -cf sudo" >> ~/.bashrc
回复 支持 反对

使用道具 举报

发表于 2011-12-8 11:35:22 | 显示全部楼层
sudo下补全不了可能是因为你不是用的login shell?如果没用login shell那么/etc/profile.d/下的文件就不会source到,当然也包括bash completion设置。gnome-terminal有设置login shell的地方,konsole的话需要把命令改为bash -l。
回复 支持 反对

使用道具 举报

发表于 2011-12-8 12:00:02 | 显示全部楼层
Post by iamkr;2156671
zsh有个这个问题,比如刚emerge新装了traceroute,产生了可执行文件/usr/bin/traceroute下,如果是bash的话,这时候直接trace然后tab就能补全了,zsh非要重开一个终端才行,关掉那个cache也不行。。


在zsh中执行hash -r或者rehash即可。
回复 支持 反对

使用道具 举报

发表于 2011-12-9 21:25:10 | 显示全部楼层
Post by zhou3345;2156685
运行 source /etc/profile 呢?
bash应该也要source一下的吧。

这种情况还是很少见的吧,谁没事天天老emerge玩呀。


bash是立马生效噢,多见于emerge 了一个软件想立马试试的情况。。

Post by RichardGv;2156694
在zsh中执行hash -r或者rehash即可。

这样确实可行。。 难道zsh机制是这样
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表