Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux/MacOSX中运行C程序_C - Fatal编程技术网

在Linux/MacOSX中运行C程序

在Linux/MacOSX中运行C程序,c,C,这是另一个(可能)noob问题。假设我有一个简单的1文件程序(称为myProg.c),用c编写。当我想在Linux/MacOSX中编译这个程序时,我键入“gcc-o haha myProg.c”。生成的可执行文件现在命名为“haha”。当我想运行这个程序时,我需要在控制台中键入“./haha” 我需要做什么才能停止键入“/”始终?我如何确保只要输入“哈哈”,我的程序就会被调用?我已经检查了文件“哈哈”的权限,它是可执行的。我认为“/”表示可执行文件的路径,即文件存在于当前目录(“.”)中,对吗?

这是另一个(可能)noob问题。假设我有一个简单的1文件程序(称为myProg.c),用c编写。当我想在Linux/MacOSX中编译这个程序时,我键入“gcc-o haha myProg.c”。生成的可执行文件现在命名为“haha”。当我想运行这个程序时,我需要在控制台中键入“./haha”


我需要做什么才能停止键入“/”始终?我如何确保只要输入“哈哈”,我的程序就会被调用?我已经检查了文件“哈哈”的权限,它是可执行的。我认为“/”表示可执行文件的路径,即文件存在于当前目录(“.”)中,对吗?

默认情况下,当前目录不是unix派生操作系统中路径的一部分。这是一种安全措施,您可以但不应该通过修改
.bash\u配置文件
中的路径来更改它

不在路径中包含当前目录的原因:假设您是root用户,并且您有一个恶意用户。该用户在其主目录中创建了一个例如
ls
可执行文件,但这并不好。如果您正在查看该用户正在做什么,并在其主目录中键入
ls
,则将执行其ls


如果您只想更改它,请将
PATH=“${PATH}:.”
添加到
.bashrc
.bash\u配置文件中。
默认情况下,当前目录不是unix派生操作系统中路径的一部分。这是一种安全措施,您可以但不应该通过修改
.bash\u配置文件
中的路径来更改它

不在路径中包含当前目录的原因:假设您是root用户,并且您有一个恶意用户。该用户在其主目录中创建了一个例如
ls
可执行文件,但这并不好。如果您正在查看该用户正在做什么,并在其主目录中键入
ls
,则将执行其ls


如果您只想更改它,请将
PATH=“${PATH}:.”
添加到您的
.bashrc
.bash\u配置文件中

谢谢Erik。这基本上回答了我的问题。还有一个问题。假设操作系统以从左到右的方式处理path变量。我们是否可以在末尾添加当前目录“.”,以确保不会出现此类风险场景(如回答中所述)?还是操作系统一直在查找路径中提到的所有目录,然后选择距离根目录最远的目录?@CRK:找到的第一个目录被选中,因此将
放在最后可以降低风险。但这仍然是一个问题-当您尝试使用此特定系统上未安装的
mc
时会发生什么情况?或者您将
ls
误键入为
lls
?嗯。。我现在明白了……)再次感谢。您可以通过执行导出路径=$PATH:.将“.”附加到末尾。谢谢Erik。这基本上回答了我的问题。还有一个问题。假设操作系统以从左到右的方式处理path变量。我们是否可以在末尾添加当前目录“.”,以确保不会出现此类风险场景(如回答中所述)?还是操作系统一直在查找路径中提到的所有目录,然后选择距离根目录最远的目录?@CRK:找到的第一个目录被选中,因此将
放在最后可以降低风险。但这仍然是一个问题-当您尝试使用此特定系统上未安装的
mc
时会发生什么情况?或者您将
ls
误键入为
lls
?嗯。。我现在明白了……)再次感谢。您可以通过执行导出路径=$PATH:,将“.”附加到末尾。