我可以用 .zshrc 覆盖 /usr/bin/ 中的链接吗?

我可以用 .zshrc 覆盖 /usr/bin/ 中的链接吗?

我已经/usr/bin/python映射到/usr/bin/python3.7,但我更喜欢使用python3.6。因此我手动重新创建了链接,但每次我用 更新系统时,pacman -Syu它们都会被系统默认值再次覆盖。

处理此问题的最佳做法是什么?我是否应该添加alias python=/usr/bin/python3.6(这无论如何都会使非 cli 应用程序使用错误的 python)或其他选项,以使我的系统在从任何地方python3.6运行时默认运行python

答案1

如果程序仅需要python并且不指定其完整路径,则可以创建具有正确符号链接的另一个目录并将其放在 $PATH 的前面。

例如:

$ mkdir ~/bin
$ ln -s /usr/bin/python3.6 ~/bin/python
$ export PATH="$HOME/bin:$PATH"
$ type python
python is /home/xxx/bin/python
$ python --version
Python 3.6.x

如果程序特别需要/usr/bin/python,没有 root 权限你就无能为力。(而且你不应该,由于 Arch 发布的程序通常需要与 Arch 发布的相同的 Python – 因此使用较旧的版本才是安全的你自己程式。)

但是,root 可以改变这一点暂时使用挂载命名空间,或者直接将文件移走即可永久更改。要永久更改它(并冒着破坏官方软件包的风险):

  1. 在 /etc/pacman.conf 的常规 [options] 部分中,添加NoUpgrade = usr/bin/python
  2. 用于ln -s以您想要的任何方式更改实际的 /usr/bin/python 符号链接。Python 升级后,新链接将被提取到 /usr/bin/python.pacnew 并且不会重置您的更改。

相关内容