当我们想要 运行 时,为什么我们需要在可执行 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 中有一个文件恰好是命令的名称。
假设我有一个名为 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 中有一个文件恰好是命令的名称。