我是 Linux 新手。在我的桌面上,我创建了以下名为 trimmomatic 的脚本
#!/bin/bash
java -jar /home/aishah/software_library/Trimmomatic-0.36/trimmomatic-0.36.jar
当我打开终端并执行
$ cd Desktop
其次是
$ bash trimmomatic
脚本有效。
但是,如果我从 以外的目录运行该脚本,它将不起作用Desktop
。例如,当我打开终端并直接执行
$ bash trimmomatic
它说
bash: trimmomatic: No such file or directory
我该怎么做才能从任何目录运行该脚本?
请给我有关要输入的所有命令以及在何处输入的详细说明。
答案1
您需要记住以下几件事:
bash
接受脚本文件作为参数,bash trimmomatic
但是这bash trimmomatic
意味着文件trimmomatic
必须位于执行命令的当前工作目录中bash trimmomatic
。命令行参数是文件,除非指定完整路径,否则必须位于当前工作目录中。当您在 shell 中执行任何非内置命令(例如
ls
或 )时df
,shell 会遍历$PATH
变量中的目录列表。如果找到文件并且可在这些目录中执行,则 shell 将执行该文件。当然,~/Desktop
不在 中的目录列表中$PATH
,因此您不能直接将其调用为trimmomatic
现在,您有一个单行脚本。实际上,如果您只有一个命令,则不需要完整的脚本,除非打算与系统上的其他用户共享。更实用的方法是在您的~/.bashrc
文件中定义别名或函数。对于函数,您可以执行
trimmomatic(){
java -jar /home/aishah/software_library/Trimmomatic-0.36/trimmomatic-0.36.jar
}
将其附加到后~/.bashrc
,运行source ~/.bashrc
命令,然后可以调用该函数
$ trimmomatic
函数不依赖于$PATH
,因此您可以在任何地方执行它们。如果您坚持使用脚本,那么我建议将脚本放入~/bin
目录或中~/.local/bin
。在 Ubuntu 上,当您通过配置文件登录时~/bin
会添加到,但是 不是,因此您必须在文件中添加以下行:。在这两种情况下,请记住源配置文件以更新您当前的 shell 环境。完成后,shell 将开始在其中任一目录中查找,如果您的脚本位于那里,它将被执行。当然,这样您不需要通过调用脚本,而是可以直接调用。$PATH
~/.profile
~/.local/bin
~/.bashrc
PATH="$PATH:~/.local/bin
bash trimmomatic
trimmomatic
答案2
将脚本放入 /usr/bin 或 /bin 并赋予其执行权限。这样做你应该可以从任何地方执行该脚本。