我试图了解IFS如何使用我编写的这个简单代码。但这不起作用,任何人都可以解释为什么这不起作用吗?
#include <stdio.h>
void main()
{
system("export IFS='/'; /bin/date");
}
根据上面的代码,命令&#39; / bin / date&#39;应分为2个命令,如&#39; bin&#39;和&#39; date&#39;,但这没有发生。
答案 0 :(得分:0)
IFS用于扩展后的单词拆分。这里没有发生扩展,因此IFS不相关。通过'系统'来做这件事是没有意义的,因为那只是混淆了这个问题。从shell中考虑以下内容:
$ k=/bin/date
$ /bin/date # execute /bin/date
$ $k # expand k, perform word-splitting (nothing happens), run /bin/date
$ IFS=/
$ /bin/date # execute /bin/date
$ $k # expand k, perform word-splitting to get 3 words: "", "bin", "date"
# attempt (and fail) to invoke a command with the name "" and arguments
# "bin", "date"