Max*_*Hax 1 filesystem bash latex 12.04
我已经安装了当前版本的 texlive (2012),它将其二进制文件安装到/usr/local/texlive/2011/bin/i386-linux/. 我随后通过修改/etc/environment文件将此目录添加到 PATH 变量,因为我希望为所有用户安装它:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2012/bin/i386-linux"
Run Code Online (Sandbox Code Playgroud)
然后我继续删除texliveapt-suite 包,因为我在尝试编译.tex文档时遇到错误,该文档显示 texlive 2009 发行版与我的 Lubuntu 12.04 一起预先打包。
现在发生了一些非常奇怪的事情:
~ which pdflatex
/usr/local/texlive/2012/bin/i386-linux/pdflatex
Run Code Online (Sandbox Code Playgroud)
所以似乎正在找到二进制文件。尽管如此,还是会发生以下情况:
~ pdflatex foo.tex
/usr/bin/pdflatex: File not found!
Run Code Online (Sandbox Code Playgroud)
为什么它看起来 ìn /usr/bin/?这是bash二进制位置的某种内部缓存吗(我依稀记得听说过这个)?
什么是可能的修复?
Bash 确实为最近查找的程序提供了一个“缓存”。您可以使用hash -r在 shell 中清除此缓存。备择方案:
/usr/bin/pdflatex file.texwhich是一个外部程序。它将始终将程序报告为在当前状态下匹配。要调查 shell 执行了哪个命令,请使用type内置命令。
缓存演示:
$ which acpidump
/usr/bin/acpidump
$ 类型 acpidump
acpidump 是 /usr/bin/acpidump
$ acpidump -h &>/dev/null # 触发查找
$ 类型 acpidump
acpidump 被散列 (/usr/bin/acpidump)
$ mv ~/bin/acpidump{.x,} # 使 acpidump 在 PATH 中可用
$ which acpidump
/home/peter/bin/acpidump
$ 类型 acpidump
acpidump 被散列 (/usr/bin/acpidump)
$ hash -r # 清除缓存
$ 类型 acpidump
acpidump 是 /home/peter/bin/acpidump
| 归档时间: |
|
| 查看次数: |
1129 次 |
| 最近记录: |