这是我理解的问题,我相信 *nix 系统很少需要重启。也就是说,如果您安装了新的“应用程序”甚至内核 9/10,则不需要重新启动。
我最近安装了一个随机组件(liquidsoap 依赖项)我需要从源代码:camlp4-4.03-1 并注意到以下内容:
pi@raspberrypi:~ $ /usr/local/bin/camlp4 -v
Camlp4 version 4.03.0
pi@raspberrypi:~ $ camlp4 -v
Camlp4 version 4.01.0
pi@raspberrypi:~ $ which camlp4
/usr/local/bin/camlp4
我对版本不匹配感到难过?对于什么似乎是同一个文件? 当前目录中没有“camlp4”:)
HW: Raspberry Pi 3
OS: Raspbian Jessie (up to date)
请求添加的信息:
pi@raspberrypi:~ $ find / -name camlp4
/usr/local/lib/ocaml/site-lib/camlp4
/usr/local/lib/ocaml/camlp4
/usr/local/bin/camlp4
/usr/lib/ocaml/camlp4
/usr/share/doc/camlp4
/usr/bin/camlp4
/home/pi/apps/camlp4
/home/pi/apps/camlp4/camlp4-4.03-1/_build/camlp4
/home/pi/apps/camlp4/camlp4-4.03-1/camlp4
/home/pi/apps/ocamlfind/findlib-1.6.2/site-lib-src/camlp4
pi@raspberrypi:~ $ type -a camlp4
camlp4 is /usr/local/bin/camlp4
camlp4 is /usr/bin/camlp4
pi@raspberrypi:~ $ which camlp4
/usr/local/bin/camlp4
pi@raspberrypi:~ $ /usr/bin/camlp4 -v
Camlp4 version 4.01.0
pi@raspberrypi:~ $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
提供的测试解决方案:
pi@raspberrypi:~ $ /usr/local/bin/camlp4 -v
Camlp4 version 4.03.0
pi@raspberrypi:~ $ camlp4 -v
Camlp4 version 4.01.0
pi@raspberrypi:~ $ which camlp4
/usr/local/bin/camlp4
pi@raspberrypi:~ $ hash -r
pi@raspberrypi:~ $ camlp4 -v
Camlp4 version 4.03.0
最佳答案
大多数 shell 确实维护了二进制文件的缓存以针对给定命令启动,以避免每次都搜索 PATH
,而 which
并不知道这一点缓存,它解释了您观察到的差异。刷新缓存的方式因 shell 而异。对于 bash
或 dash
,您应该执行 hash camlp4
。对于 zsh
,这是 rehash
。
关于linux - Unix 缓存二进制文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40020974/