有时在一个系统中有多个版本程序的存在,想修改当前命令默认执行的版本。
一、添加命令
1、将命令路径加入环境变量
为了实现在终端中输入命令打开程序,需要将程序可执行文件路径加入环境变量即可:
系统环境变量设置文件:对所有系统用户都有效
/etc/environment
/etc/profile
/etc/bash.bashrc
用户环境变量设置文件:仅对当前的用户有效
~/.profile
~/.bash_profile 或者 ~./bash_login
~/.bashrc
方法:
在 /etc/profile 中添加环境变量:
#set matlab evvironment
export PATH=$PATH:/usr/local/matlab/bin
并执行 source /etc/profile
2、向系统原有搜索路径添加链接
Linux 在生成文件的时候,内容会为每一个文件生成一个唯一的索引节点(Inode),文件的属性都会保存在这个Inode中。链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法,有软链接(symbol links)和硬链接之分。一个文件除非链接数为0,否则不会从文件系统中被物理地删除。不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。无论是软链接还是硬链接,文件都保持同步变化。
硬链接(hard links):
为文件创建了额外的条目.使用时, 与文件没有区别; 删除时, 只会删除链接, 不会删除文件;
硬链接的局限性: 1. 不能引用自身文件系统以外的文件, 即不能引用其他分区的文件; 2. 无法引用目录;
操作: ln file link, 只能link文件,最好使用绝对路径;
符号链接(symbolic links):
克服硬链接的局限性, 类似于快捷方式, 使用与硬链接相同. 如果先删除文件, 则会成为坏链接(broken), ls会以不同颜色(Ubuntu, 红色)显示;符号链接也称为软链接,是将一个路径名链接到一个文件。它只是一个文本文件,其中包含它提供链接的另一个文件的路径名。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。
操作: ln -s item link, 可以link文件和目录;
ln -s /usr/local/MATLAB/R2017b/bin/matlab /usr/bin/matlab //最好使用绝对路径,否则可能会出现Too many levels of symbolic links 问题
删除文件的软链接符号,仅会删除链接,不会删除原文件。删除目录的软连接时注意:rm dir1.soft(仅删除链接)和rm -rf dir1_1.soft/(删除的是链接的原目录下文件)的区别。
使用ls查找某文件、目录的所有软链接:
例如:查找 /etc/目录有那些软链接
ls -lR / 2> /dev/null | grep /etc/ | grep ^l
ls -li
当前目录下文件的连接
使用find查找某文件的所有硬链接:
例如:查找/boot/grup/grup.conf的硬链接
首先使用
ls -i /boot/group/group.conf
查找出inode节点,然后使用:
find / 2> /dev/null -inum 131092(查找inode节点号)
根据切点信息 找出所有硬链接文件
二、修改默认、添加链接
update-alternatives是ubuntu系统中专门维护系统命令链接符的工具。
显示一个命令链接组的所有信息,当前有多少个版本
update-alternatives --display java
修改默认版本
update-alternatives --config java
删除
update-alternatives –remove java /usr/local/jre1.6.0_20/bin/java //如果所删除的链接组中还有其他链接的话,系统将会自动从其他中选择一个priority高的链接作为默认为链接
update-alternatives --install /usr/bin/matlab matlab /usr/local/MATLAB/R2017b/bin/matlab 500
update-alternatives --install link name path priority [--slave link name path] // 其中link为系统中功能相同软件的公共链接目录,比如/usr/bin/java(需绝对目录); name为命令链接符名称,如java; path为你所要使用新命令、新软件的所在目录; priority为优先级,当命令链接已存在时,需高于当前值,因为当alternative为自动模式时,系统默认启用priority高的链接; --slave为从alternative。
另外一个类似的命令是
alternatives --config java
alternatives --install /usr/bin/java java /usr/java/default/bin/java 500