![`update-alternatives --config somecommand` 如何找到 `somecommand` 的符号链接?](https://linux22.com/image/126133/%60update-alternatives%20--config%20somecommand%60%20%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%20%60somecommand%60%20%E7%9A%84%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%EF%BC%9F.png)
从https://stackoverflow.com/a/48374564/156458
update-alternatives --config java
/usr/bin/java
通过将符号链接安装到命令as/usr/bin/javac
等来工作。
如何update-alternatives --config somecommand
找到 的符号链接somecommand
?
例如,它是否依赖于,因此其工作方式与直接在 bash 中运行时$PATH
bash 查找文件的方式相同?somecommand
somecommand
如果文件somecommand
不是符号链接,可以update-alternative --config somecommand
工作吗?
谢谢。
答案1
工作方式update-alternatives
在其描述联机帮助页。给定命令(或文件,一般来说,替代方案不限于命令)的可用替代列表存储在/var/lib/dpkg/alternatives
Debian 及其衍生版本的文件中;因此 的替代方案java
存储在 中/var/lib/dpkg/alternatives/java
。在 Fedora、RHEL 及其衍生产品上,文件存储在/var/lib/alternatives
.
当一个包希望提供替代方案时,它会使用update-alternatives --install
(和适当的参数)来安装它;当它希望删除替代项时,它会使用update-alternatives --remove
.如有必要,您可以使用这些来提供您自己的替代方案。
请注意,在 Java 的具体情况下,在 Debian 及其衍生版本上,替代方案处理稍微复杂一些,您应该使用update-java-alternatives
而不是手动操作所有替代方案。
如果由于某种原因替代管理的文件不是符号链接,update-alternatives
则将认为替代已损坏并拒绝触及它。