【问题标题】:Why nano and rnano are different?为什么纳米和纳米纳米不同?
【发布时间】:2014-11-20 03:42:38
【问题描述】:

我尝试使用 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 中)

【问题讨论】:

    标签: linux editor nano


    【解决方案1】:

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

    因为rnano 是独立于nano 的文件(尽管它只是一个符号链接),所以它有自己独立的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 脚本。然后,使用单独的名称创建指向它的符号链接。观察差异。

    【讨论】:

    • 哇!绝妙的方法。非常感谢。
    猜你喜欢
    • 2010-09-28
    • 1970-01-01
    • 2013-04-10
    • 2011-11-23
    • 1970-01-01
    • 2010-09-15
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多