为什么当我们想要运行可执行的 c++ 文件时,我们需要在可执行的 c++ 文件前面"./"?

Why do we need "./" in front of an excutable c++ file when we want to run it?

本文关键字:文件 可执行 c++ 我们 前面 为什么 运行      更新时间:2023-10-16

>假设我有一个名为lencode的可执行C++程序,我想使用UUOC运行它。我可以使用以下命令成功运行它:

cat file.txt | ./lencode

但是现在,由于某些要求,我希望我的命令行采用以下格式:

cat file.txt | lencode

我无法运行该程序。我怎样才能做到这一点?

./前缀的原因是当前目录(由快捷方式 "." 引用(不在 $PATH 环境中。

一个答案是,把"."放在你的$PATH环境中。

对于 bash:

export PATH=$PATH:.

对于 tcsh:

setenv PATH ${PATH}:.

要确定外壳,请执行以下操作:

echo $0

有关外壳的更多信息:

man bash

man tcsh

但是,这是一种安全风险。更好的方法(如贾斯汀·拉梅里兹的回答所述(是将包含 lencode 的目录(如果lencode位于 /home/user/lencode /home/user/(放在您的$PATH中,或者lencode移动到您$PATH中的目录。

例如,如果您使用 tcsh 作为 shell:

mkdir $HOME/bin
cp lencode $HOME/bin
setenv PATH ${PATH}:$HOME/bin

要在下次登录时保留此设置,应将其放在$HOME/.tcshrc文件中:

setenv PATH ${PATH}:$HOME/bin

将 lencode 的目录添加到路径中,或将其移动到路径中的目录。您可能并不总是希望路径中的当前目录。即任何时候您在CWD中有一个文件,该文件恰好是命令的名称。

相关文章: