上下文
我已经scilab-6.1.0.bin.linux-x86_64.tar.gz
从“Scilab”官方网站因为我希望能够使用提供的工具。
在bin
下载文件的目录中,我有以下文件
$ ls -l | cut -d ' ' -f 5-
1713591 Feb 25 05:27 modelicac
2057719 Feb 25 05:27 modelicat
44563 Feb 25 05:27 scilab
6 Feb 25 05:27 scilab-adv-cli -> scilab
24741 Feb 25 05:27 scilab-bin
6 Feb 25 05:27 scilab-cli -> scilab
20725 Feb 25 05:27 scilab-cli-bin
44563 Feb 25 05:27 scinotes
44563 Feb 25 05:27 xcos
675942 Feb 25 05:27 XML2Modelica
$ test -L scilab-adv-cli && test -L scilab-cli && echo $?
0
正如我们所看到的,scilab-cli
和scilab-adv-cli
都是到 的符号链接scilab
。执行scilab-cli
,scilab-adv-cli
和scilab
会产生不同的结果(参见下面的 gif)
问题
不是符号链接(A),它指向一个可执行文件(二),应该执行(二)?
在上面提出的场景中,scilab-cli
并且scilab-adv-cli
将是(A)并且scilab
会是(二)。
答案1
运行指向可执行文件的符号链接确实会运行可执行文件,但有一个重要的区别:给予新进程的第一个参数(在本例中)存储给定的命令,给出了符号链接的名称,而不是目标可执行文件的名称。这允许程序根据它们的调用方式实现不同的行为。
您的系统上可能安装的一个常见实例是apropos
:它通常(至少在 Linux 系统上)是 的符号链接whatis
,但这两个命令的行为不同。
在您的情况下,当scilab
运行为时scilab-cli
,它会显示其文本模式界面;当它运行时scilab
(正如你的方法所发生的那样realpath
),它启动它的 GUI。