我以为我明白这一点,但我得到了无法解释的行为。我有这些文件:
$ which -a kvm | xargs ls -l
lrwxrwxrwx 1 root root 18 2011-11-17 17:14 /usr/bin/kvm -> qemu-system-x86_64
lrwxrwxrwx 1 root root 18 2011-11-17 17:21 /usr/local/bin/kvm -> qemu-system-x86_64
$ which -a qemu-system-x86_64 | xargs ls -l
-rwxr-xr-x 1 root root 2535168 2011-10-04 02:44 /usr/bin/qemu-system-x86_64
-rwxr-xr-x 1 root root 3497304 2011-11-17 16:26 /usr/local/bin/qemu-system-x86_64
Run Code Online (Sandbox Code Playgroud)
它们是不同的版本:
$ /usr/bin/kvm --version
QEMU PC emulator version 0.12.3 (qemu-kvm-0.12.3), Copyright (c) 2003-2008 Fabrice Bellard
$ /usr/local/bin/kvm --version
QEMU emulator version 0.15.92 (qemu-kvm-devel), Copyright (c) 2003-2008 Fabrice Bellard
Run Code Online (Sandbox Code Playgroud)
我的路径是/usr/local/bin第一个,当我这样做时,我会which看到那个。所以我希望它会赢。但相反,旧版本获胜:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
$ which kvm
/usr/local/bin/kvm
$ kvm --version
QEMU PC emulator version 0.12.3 (qemu-kvm-0.12.3), Copyright (c) 2003-2008 Fabrice Bellard
Run Code Online (Sandbox Code Playgroud)
为什么kvm --version给我 0.12 而不是 0.15???
在这种情况下,Linux 不做决定;它由您的 shell 提供了确切的路径。使用bash或zsh等高级 shell 时,该which工具不准确,因为它只检查 $PATH,但还有更多可能性。运行type kvm应该告诉你 shell 在哪里寻找它。
" hashed":第一次运行命令时,bash shell 会记住它的位置,这样它就不必再次搜索整个 $PATH。记住的位置只保存在内存中。使用 hash列出他们和hash -r复位,或简单地启动第二个shell窗口。
“ alias”:您可能创建了一个kvm指向旧路径的别名“ ”。如果是这种情况,请使用 unalias kvm删除别名。
" function":类似于别名,但更具表现力。同样,您可能已经添加并忘记了一个名为kvm指向错误路径的函数。使用 unset kvm删除这样的功能。
| 归档时间: |
|
| 查看次数: |
1321 次 |
| 最近记录: |