分类 linux相关 下的文章

在默认情况下, /usr/local/bin 的优先级通常高于 /usr/bin 。

这是因为在Linux系统中, PATH 环境变量中目录的顺序决定了可执行文件的搜索优先级,而 /usr/local/bin 通常在 /usr/bin 之前。当你输入 python3 时,系统会按照 PATH 中目录的顺序依次查找可执行文件,所以会先找到 /usr/local/bin 下的 python3 软链接并执行。

不过, PATH 的设置可能因系统配置和用户自定义而有所不同。如果 /usr/bin 在 PATH 中排在 /usr/local/bin 之前,那么就会先执行 /usr/bin 下的 python3 。你可以通过查看 PATH 环境变量的值来确定具体的搜索顺序,命令为 echo $PATH 。

/usr/bin 和 /usr/local/bin 是Linux系统中用于存放可执行文件的两个不同目录,它们的区别如下:

软件来源

  •  /usr/bin :通常包含系统预装的、由Linux发行版提供的标准可执行程序和命令,这些软件是系统正常运行所必需的,如文本编辑器、文件管理工具等。
  •  /usr/local/bin :主要用于存放用户自行安装的软件的可执行文件,这些软件可能是从源代码编译安装,或者是通过一些非官方的包管理方式安装的。

软件管理

  •  /usr/bin :目录中的软件由系统的包管理工具进行管理和维护,当系统进行升级或更新时,这些软件会被自动更新或升级。
  •  /usr/local/bin :目录中的软件一般不受系统包管理工具的直接管理,需要用户手动进行安装、更新和卸载操作。

系统升级影响

  •  /usr/bin :系统升级可能会对该目录中的文件进行替换、更新或删除操作,以保证系统软件的版本与发行版的更新保持一致。
  •  /usr/local/bin :系统升级通常不会影响该目录中的文件,用户需要自行关注软件的更新情况并进行相应处理,以避免与系统升级产生潜在冲突。

要查看Linux中软链接所指向的可执行文件,可以使用以下方法:

使用 ls -l 命令

使用 ls -l 命令查看软链接的详细信息,命令输出中软链接的文件名后会显示其指向的目标文件或目录,例如:

plaintext

lrwxrwxrwx 1 user user 12 Jun 10 10:00 mylink -> /bin/python3
 

这里 mylink 是软链接,它指向 /bin/python3 可执行文件。

使用 readlink 命令

 readlink 命令可以直接输出软链接指向的目标路径,如 readlink mylink ,会输出 /bin/python3 。如果软链接指向的是一个可执行文件,那么输出的就是该可执行文件的路径。

使用 file 命令

 file 命令也能显示软链接指向的文件类型及相关信息,执行 file mylink ,输出可能类似于 mylink: symbolic link to /bin/python3 ,明确指出软链接指向的可执行文件路径。

在Linux系统中安装多个Python版本后,想使用原先的Python 3.11版本,可通过以下几种方法实现:

使用alias命令

通过 alias 命令为Python 3.11设置别名,如在终端输入 alias python3.11='/usr/bin/python3.11' (假设Python 3.11的可执行文件路径是 /usr/bin/python3.11 )。之后,要使用Python 3.11时,直接输入 python3.11 即可。

使用update - alternatives命令

若系统支持 update - alternatives 命令,可先使用 sudo update - alternatives --install /usr/bin/python python /usr/bin/python3.11 <优先级> (将 <优先级> 替换为数字,数字越大优先级越高)将Python 3.11添加到备选项中。然后执行 sudo update - alternatives --config python ,根据提示选择Python 3.11对应的选项,即可将其设置为当前使用的版本。

设置PATH环境变量

打开 ~/.bashrc 或 ~/.bash_profile 文件,在其中添加 export PATH="/path/to/python3.11/bin:$PATH" ,将 /path/to/python3.11/bin 替换为Python 3.11的安装路径下的 bin 目录。保存文件后,执行 source ~/.bashrc 或 source ~/.bash_profile 使环境变量生效。

使用pyenv工具

如果安装了 pyenv ,可先通过 pyenv install 3.11 安装Python 3.11(若已安装可省略),然后使用 pyenv global 3.11 将Python 3.11设置为全局使用的版本,或者在特定项目目录下使用 pyenv local 3.11 将其设置为该目录下的本地版本。

在Linux中,软链接和硬链接有以下区别:

链接原理

  • 软链接:也叫符号链接,是一个独立的文件,它包含了指向另一个文件或目录的路径信息,类似于Windows系统中的快捷方式。
  • 硬链接:通过在文件系统中创建一个新的目录项,直接指向同一个文件的inode(索引节点),多个硬链接共享同一个inode,它们实际上是同一个文件的不同别名。

文件属性

  • 软链接:有自己独立的inode和文件属性,其大小通常是所指向目标路径的长度,权限等属性可以与目标文件不同。
  • 硬链接:与原文件共享inode,因此具有相同的文件属性,如权限、修改时间、文件大小等。

对原文件的依赖

  • 软链接:如果原文件被删除或移动,软链接将失效,成为“死链接”,但软链接文件本身仍然存在。
  • 硬链接:只要有一个硬链接存在,文件的数据就不会被删除,只有当所有硬链接都被删除,文件才会被真正删除。

跨文件系统支持

  • 软链接:可以跨越不同的文件系统创建,即可以链接到其他分区或存储设备上的文件。
  • 硬链接:不能跨越文件系统,因为不同文件系统有各自独立的inode编号,无法在不同文件系统中创建指向同一inode的硬链接。

创建命令

  • 软链接:使用 ln -s 命令创建,如 ln -s source_file target_link 。
  • 硬链接:使用 ln 命令创建,如 ln source_file target_link 。