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當然 –