gpt4 book ai didi

c - PATH env 和 argv[0] 之间的关系

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:00 26 4
gpt4 key购买 nike

一般argv[0]与exec文件名相同。例如:

  • 如果我用 ./my_program 执行程序然后argv[0]./my_program
  • 如果我用 /home/username/my_program 执行程序然后argv[0]/home/username/my_program .

我的问题是,如果PATH=/home/username为什么我看不到argv[0]值(value)?

这是我的真实情况

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所以我可以直接执行程序。

knight@knight-desktop:~$ test

knight@knight-desktop:~$ ./test
./test

我不明白,为什么knight@knight-desktop:~$ test命令打印任何结果?

最佳答案

因为 test 是一个 shell 内置命令。

./test(它是一个可执行文件)之间有很大的区别,而 test 是直接传递给 shell 的命令,如果输入不正确,它可能无法识别,例如假设您使用命令 tst 结果将是 -bash: tst: command not found

要检查任何单词是否是 shell 的内置命令/保留关键字,请使用命令 type

在终端上,

$type test
test is a shell builtin
$type if
if is a shell keyword

关于c - PATH env 和 argv[0] 之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40928552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com