LinuxSir.cn,穿越时空的Linuxsir!

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

定义了 alias 之后,无法使用 bash_complete 自动补全,为何?

[复制链接]
发表于 2010-6-27 09:54:57 | 显示全部楼层 |阅读模式
我在 .bashrc 里面定义了
  1. 148 alias pac="sudo pacman -S"·
  2. 149 alias pacs="pacman -Ss"
  3. 150 alias pq="pacman -Q"
  4. 151 alias pup="sudo pacman -Syu"
复制代码

当时 pacman -Ss 时,使用 tab 可以自动补全,而使用 上面定义的别名 pacs 时确不能

再自动补全,这是怎么回事啊!

谢谢!!!
发表于 2010-6-27 12:23:21 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-27 12:37:15 | 显示全部楼层
谢谢 adaml 兄,但是你提供的是 apt 的相关选项,pacman 的还是搜寻中,谢谢!
回复 支持 反对

使用道具 举报

发表于 2010-6-27 12:39:42 | 显示全部楼层
Post by 57lvii;2099946
谢谢 adaml 兄,但是你提供的是 apt 的相关选项,pacman 的还是搜寻中,谢谢!


你去看bash-completition的脚本, 把pacman的提出来就是了...估计没有可以直接抄的
回复 支持 反对

使用道具 举报

发表于 2010-6-27 13:08:31 | 显示全部楼层
Post by 57lvii;2099919
我在 .bashrc 里面定义了


  1. 148 alias pac="sudo pacman -S"·
  2. 149 alias pacs="pacman -Ss"
  3. 150 alias pq="pacman -Q"
  4. 151 alias pup="sudo pacman -Syu"
复制代码


当时 pacman -Ss 时,使用 tab 可以自动补全,而使用 上面定义的别名 pacs 时确不能

再自动补全,这是怎么回事啊!

谢谢!!!

在后面引号之前留一个空格试试看

  1. alias pq='pacman -Q '
复制代码
回复 支持 反对

使用道具 举报

发表于 2010-6-27 17:36:47 | 显示全部楼层
Post by Alerander;2099949
在后面引号之前留一个空格试试看

  1. alias pq='pacman -Q '
复制代码

是啊,俺就是这么干的,从来没问题。楼主试试试看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-27 21:59:34 | 显示全部楼层
  1. 在后面引号之前留一个空格试试看
  2. alias pq='pacman -Q '
复制代码

还是不行的!!!

难道我哪个地方,和你们不一样吗?

.bashrc 开头:
  1.   1 if [ -f /etc/bash_completion ]; then
  2.   2 |   . /etc/bash_completion
  3.   3 fi                 
复制代码
回复 支持 反对

使用道具 举报

发表于 2010-6-27 23:34:43 | 显示全部楼层
嗯,我又看了一下,我这里没加空格的也可以补全。
我的alias是定义在$HOME/.profile文件中,然后 ln -s .profile .bashrc

比如,.profile中有这样一句:
alias sc='source'
执行时:
$ sc .pro<TAB>
即可补全为.profile

你试着把alias写到$HOME/.profile文件里,然后从新登录一下看。不确定是不是跟这个有关系。不同的登录模式使用不同的bash配置文件(所以为了统一起见我作了一个link而不是创建两个文件)。我这里,命令行登录使用.profile文件,终端窗口登录使用.bashrc文件。

extra中确实有个bash-completion,不过看了一下,我没装这个东西。也没做过什么特别的配置,好像自然就带补全功能了
回复 支持 反对

使用道具 举报

发表于 2010-6-28 00:05:59 | 显示全部楼层
另外楼主你再说明一下,你说的不能补全,是pacs这个别名命令本身不能补全,还是它后面带的文件名参数不能补全?
如果是前者,<TAB>一次不能补全的话,再<TAB>一次,会给出多个选择。比如你定义的pacs,由于系统里存在pacs、pacman等命令,你只敲pac再<TAB>是不会补全的。
我上面的解释针对后者。

$ pac #这里按两次<TAB>是下面结果
pacdiffviewer    pack200          package-query    packetforge-ng   pacman           pacman-color     pacman-optimize  pacs
回复 支持 反对

使用道具 举报

发表于 2010-6-28 02:54:04 | 显示全部楼层
Post by 糊涂;2100056
嗯,我又看了一下,我这里没加空格的也可以补全。
我的alias是定义在$HOME/.profile文件中,然后 ln -s .profile .bashrc

比如,.profile中有这样一句:
alias sc='source'
执行时:
$ sc .pro<TAB>
即可补全为.profile

你试着把alias写到$HOME/.profile文件里,然后从新登录一下看。不确定是不是跟这个有关系。不同的登录模式使用不同的bash配置文件(所以为了统一起见我作了一个link而不是创建两个文件)。我这里,命令行登录使用.profile文件,终端窗口登录使用.bashrc文件。

extra中确实有个bash-completion,不过看了一下,我没装这个东西。也没做过什么特别的配置,好像自然就带补全功能了



又不是补全文件名, 是补全包名...:yun:
回复 支持 反对

使用道具 举报

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

本版积分规则

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