0
通常,argv [0]与exec文件名相同。例如:PATH env和argv之间的关系[0]
- 如果我执行程序与
./my_program
然后argv[0]
是./my_program
- 如果我执行程序与
/home/username/my_program
然后argv[0]
是/home/username/my_program
。
我的问题是,如果PATH=/home/username
为什么我看不到argv[0]
值?
这是我的真实情况
PATH=/home/knight/bin:/home/knight/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/knight
我的测试程序源:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%s\n", argv[0]);
}
我的主目录是/home/knight
这样我就可以直接执行程序。
[email protected]:~$ test
[email protected]:~$ ./test
./test
我不明白,为什么[email protected]:~$ test
命令不打印任何结果?
'test'是[bash的关键字(http://wiki.bash-hackers.org/commands/classictest),这样你就不会实际运行可执行文件时你只需在命令提示符下键入'test'。 –
@ PaulR的观察是否使您的整个问题无关紧要,还是您想知道其他*程序名称的行为? – usr2564301
在类UNIX系统上,环境变量通过传统上称为env或argen的指针传入。 main有签名int main(int argc,char ** argv,char ** argenv)。不能移植到非UNIX当然 –