我正在尝试运行Beej的网络编程指南中的一个示例(https://beej.us/guide/bgnet/),特别是showip.c(该程序的链接如下:https://beej.us/guide/bgnet/examples/showip.c)。使用gcc,我输入了
gcc -o showip showip.c
然后运行程序
showip www.example.net
在编译代码和程序的同一目录上,我得到了一个错误showip:commandnot found。我不确定为什么会出现这种情况。我甚至从他的GitHub中克隆了代码,并使用makefile编译了程序,但我也收到了同样的错误。我到底做错了什么?
这实际上是运行程序的问题。
在Linux系统(与Windows系统不同(上,shell默认不会搜索当前目录中的可执行文件以查找要运行的程序。如果给定程序不包含路径元素(即名称中没有/
字符(,则只搜索PATH
环境变量中列出的目录。
由于当前目录不是PATH的一部分,请在命令前面加上以下目录:
./showip www.example.net
工作目录在您的路径上吗?可能不会。
尝试./showip
由于程序showip
不在您的$PATH
中,您必须告知你的shell,它在当前目录中:
./showip
或者将当前目录添加到$PATH
中,但它不太安全选项:
PATH=:$PATH
或
PATH=.:$PATH
并按照您现在的尝试运行它:
showip