yih*_*gho 19 command-line gcc c
我刚刚从 Windows 切换到 Ubuntu 11.10。
我用文本编辑器用 C 编写了以下代码,并将其保存为文档中的 HelloWorld.c。
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我启动了终端并输入以下命令:
cd Documents
gcc HelloWorld.c
Run Code Online (Sandbox Code Playgroud)
一个名为 a.out 的文件,在谷歌上搜索后,就是可执行文件。我输入了这个命令:
a.out
Run Code Online (Sandbox Code Playgroud)
但我得到
a.out: command not found
Run Code Online (Sandbox Code Playgroud)
我哪一步做错了?
ams*_*ams 10
当您在 Linux 上运行命令时,它会搜索PATH环境变量中列出的所有目录,如果在那里找不到该命令,则会收到您所看到的消息。
通常它看起来像这样:
PATH=/usr/local/bin:/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)
这意味着它将首先在/usr/local/bin. 如果在那里没有找到它,它会在 中查找/usr/bin,依此类推。
事实上,这在 DOS/Windows 上非常相似:有一个名为的变量%PATH%执行完全相同的操作。
的区别在于,在Windows上,在当前目录也将被搜索。Unix 认为这很糟糕,因为本地文件(例如恶意软件)可能会意外覆盖重要的系统程序。
如果您愿意,可以通过添加.到路径使 Linux 以相同的方式工作:
PATH=.:$PATH
Run Code Online (Sandbox Code Playgroud)
(也就是说设置PATH为.:加上 的现有内容$PATH。)
它最终看起来像这样(在你的机器上可能会有所不同):
PATH=.:/usr/local/bin:/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)
如果您不想这样做,您可以通过明确指定目录来简单地运行每个程序:
./myprog
Run Code Online (Sandbox Code Playgroud)
或者
/home/username/myprog
Run Code Online (Sandbox Code Playgroud)