首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行符号链接比执行它指向的文件产生不同的结果。

执行符号链接比执行它指向的文件产生不同的结果。
EN

Unix & Linux用户
提问于 2020-05-05 09:50:48
回答 1查看 268关注 0票数 0

上下文

我从scilab-6.1.0.bin.linux-x86_64.tar.gz中下载了“Scilab”官方网站,因为我希望能够使用所提供的工具。

在下载文件的bin目录中,我有以下文件

代码语言:javascript
复制
$ 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-cliscilab-adv-cli都是指向scilab的符号链接。执行scilab-cliscilab-adv-cliscilab会产生不同的结果(参见下面的gif )

问题

指向可执行的(B)的符号链接(A)不是应该执行(B)吗?

在上述场景中,scilab-cliscilab-adv-cli(A)scilab(B)

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-05-05 09:57:46

运行指向可执行文件的符号链接确实会运行可执行文件,但是有一个重要的区别:给新进程的第一个参数(在本例中)存储给定的命令,给出符号链接的名称,而不是目标可执行文件的名称。这允许程序根据调用的方式来实现不同的行为。

在您的系统上可能安装的一个常见实例是apropos:它通常(至少在Linux系统上)是指向whatis的符号链接,但这两个命令的行为不同。

在您的例子中,当scilabscilab-cli的形式运行时,它会显示它的文本模式界面;当它以scilab的形式运行时(就像您的realpath方法一样),它会启动它的GUI。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/584654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档