为什么当我们想要运行可执行的 c++ 文件时,我们需要在可执行的 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}:.
要确定外壳,请执行以下操作:
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中有一个文件,该文件恰好是命令的名称。
相关文章:
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 程序在使用 system() 启动另一个可执行文件时停止
- 如何更改使用 CPack 安装的可执行文件的名称?
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 如何将图像传入C++可执行文件并将输出图像存储在新目录中?
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 如何在 linux 可执行文件中使用静态库
- 错误:当我从"WinDbg"打开可执行文件时,找不到符号文件。默认导出 ntdll 的符号.dll
- 编译的C可执行文件被Windows defender检测为病毒
- Linux 可执行文件通过 dlopen 在emplace_back崩溃打开共享库
- 是否可以在命令行中将输入参数传递给可执行文件
- 如何在可执行文件中存储常量数组?
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- c ++:如何为每个特征制作特定的二进制文件(可执行文件)?
- 在英特尔C++编译器 (Linux) 的配置搜索路径中找不到文件可执行文件
- 在运行时动态更新二进制文件(可执行文件)而不停止的任何类型的方法