尝试将包含各种脚本的目录添加到我的 PATH 中,但从目录外部调用时它没有运行脚本

尝试将包含各种脚本的目录添加到我的 PATH 中,但从目录外部调用时它没有运行脚本

更新:包含更多相关信息,感谢您建议包含此信息!

我对 Linux 很陌生,我正在尝试运行其他人创建的脚本。我最近了解了该$PATH变量,并意识到我需要将脚本文件夹添加到$PATH变量中,以便可以从终端上的任何位置调用它。但是,即使我将包含脚本的文件夹添加到变量中$PATH,里面的脚本也不会被识别。

我在文本编辑器中编辑了 bashrc 文件,在底部包含:

#Modify $PATH
export PATH="/home/eli/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

我的脚本位于/home/eli/bin,如果我不指定整个路径,尽管此 bin 位于我的 $PATH 变量中,但脚本将不会运行。

所以,这是我的 $PATH 变量:

(根据)eli@eli-XPS-13-7390-2-in-1:$回显$PATH
/home/eli/miniconda3/bin:/home/eli/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games :/usr/local/游戏

这是我的脚本权限:

(根据)eli@eli-XPS-13-7390-2-in-1:$ ls -al ~/bin/trim2bRAD_2barcodes_noAdap.pl
-rwxr-xr-x 1 eli eli 3064 2018 年 5 月 19 日/home/eli/bin/trim2bRAD_2barcodes_noAdap.pl

这是当我尝试在目录中运行脚本而不指定文件的确切路径时的输出:

(根据)eli@eli-XPS-13-7390-2-in-1:$ ./trim2bRAD_2barcodes_noAdap.pl
bash: ./trim2bRAD_2barcodes_noAdap.pl: 没有这样的文件或目录

答案1

当您希望 shell 在变量列出的目录中搜索可执行文件时$PATH,请勿在命令行上指定可执行文件的路径。

所以,不要这样做

./trim2bRAD_2barcodes_noAdap.pl

$PATH因为这根本不会让 shell 查找(您给出了./可执行文件的显式路径)。

相反,只使用

trim2bRAD_2barcodes_noAdap.pl

另外,当您添加到/home/eli/bin的开头时$PATH,您可以说

PATH=$HOME/bin:$PATH

假设$HOME将扩展到/home/eli.即,不需要列出所有目录,$PATH除非您想将变量设置为非常具体的目录列表和/或不相信系统已为您提供了合理的默认值。您也不需要导出,PATH因为它已经是一个环境变量。

相关内容