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

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

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

cat file.txt | ./lencode

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

cat file.txt | lencode

我运行程序失败了。我怎样才能做到这一点?

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

一个答案是,将 "." 放入您的 $PATH 环境中。

bash:

export PATH=$PATH:.

对于 tcsh:

setenv PATH ${PATH}:.

确定你的shell:

echo [=12=]

有关您的 shell 的更多信息:

man bash

man tcsh

然而,这是一个安全风险。更好的方法(如 Justin Rameriz 的回答所述)是将包含 lencode 的目录(/home/user/ 如果 lencode 位于 /home/user/lencode)放在 $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 中有一个文件恰好是命令的名称。