我遇到了一个问题,出现错误
bash: stp: command not found
(stp是我尝试执行的文件的名称)
即使我的 $PATH 变量中有该程序所在的文件夹。我已经检查过几件事:
-确保我正在运行的 shell 中编辑 $PATH。我编辑了位于主目录中的 .bashrc 文件,将其添加$HOME/bin
到路径中。我已经通过输入验证我是否在 bash shell 中
$ ps $$
返回 bash 作为命令。
- 确保我在 .bashrc 中添加的内容实际上影响了路径(在重新启动 shell 后,但从那时起我也重新启动了计算机)。打字
$ echo $PATH
/home/myself/bin
确实作为路径的一部分返回。我会注意到感兴趣的文件位于 内的文件夹内/home/myself/bin
,但这应该不重要,对吧?
-最后,/pathtofile/stp
按照我的预期执行文件。或者只是确保我在目录中并输入./stp
.
因此,如果它在我的 $PATH 变量中,我为 bash shell 编辑了正确的配置文件,确保我正在运行 bash,从那时起重新启动了 shell,我确信我忽略了一些非常微不足道的东西。我对 Unix/Linux(运行 Debian)还很陌生,所以我不知道所有的细节。但根据我的理解,无论我在哪里,我都应该能够输入内容,$ stp
并且它应该搜索路径并在其中找到它。
答案1
我会注意到感兴趣的文件位于 /home/myself/bin 内的文件夹内,但这应该不重要,对吧?
这很重要,$PATH
不是递归的。
您可以移动该文件。或者创建一个链接(硬链接或符号链接)。象征性的可能不会那么混乱:
如果文件存在于 中/home/user/bin/sub-dir/stp
,则执行:
ln -s sub-dir/stp ~/bin/stp
或者将新的子目录添加到路径中
PATH=$HOME/bin/sub-dir:$PATH