这是我的理解问题,我相信*nix系统很少需要重启.即如果您安装了新的"应用程序"甚至是内核9/10,则无需重新启动.
我最近安装了一个随机组件(liquidsoap依赖)我需要从source: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
Run Code Online (Sandbox Code Playgroud)
我对版本不匹配感到难过?对于看似相同的文件?目前的目录中没有"camlp4":)
HW: Raspberry Pi 3
OS: Raspbian Jessie (up to date)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
测试解决方案:
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
Run Code Online (Sandbox Code Playgroud)
大多数shell确实维护了二进制文件的缓存,以便为给定的命令启动,以避免PATH每次搜索,并且which不知道这个缓存,这解释了您正在观察的差异.刷新缓存的方式因shell而异.对于bash或dash,您应该这样做hash camlp4.因为zsh,这是rehash.