为什么nano和rnano不同?

时间:2014-11-20 03:42:39

标签: linux editor nano

我尝试使用nano和rnano编辑文件。后者实际上处于限制模式,但它们完全相同的二进制文件。他们为什么表现不同?

# which nano rnano
/usr/bin/nano
/bin/rnano

# md5sum /usr/bin/nano /bin/rnano
fa670e309a033718bad4b2051f5974fd  /usr/bin/nano
fa670e309a033718bad4b2051f5974fd  /bin/rnano

(在ubuntu 12.04 x64 LTS中)

1 个答案:

答案 0 :(得分:2)

由于参数向量(argv),它们的行为不同,其第一个元素(argv[0])包含正在执行的文件的名称。

由于rnanonano的单独文件(即使它只是一个符号链接),因此它有自己的argv[0]

您可以在nano.c的主要功能

中查看此结账
/* If the executable filename starts with 'r', enable restricted
 * mode.
 */
if (*(tail(argv[0])) == 'r')
    SET(RESTRICTED);

您还可以使用简单的shell脚本对此进行测试。使用一个语句echo $0创建一个shell脚本。然后,使用单独的名称创建指向它的符号链接。观察差异。