更新:包含更多相关信息,感谢您建议包含此信息!
我对 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
因为它已经是一个环境变量。