从 ubuntu linux 上的每个目录运行脚本

从 ubuntu linux 上的每个目录运行脚本

我是 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

您需要记住以下几件事:

  1. bash接受脚本文件作为参数,bash trimmomatic但是这bash trimmomatic意味着文件trimmomatic必须位于执行命令的当前工作目录中bash trimmomatic。命令行参数是文件,除非指定完整路径,否则必须位于当前工作目录中。

  2. 当您在 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~/.bashrcPATH="$PATH:~/.local/binbash trimmomatictrimmomatic

答案2

将脚本放入 /usr/bin 或 /bin 并赋予其执行权限。这样做你应该可以从任何地方执行该脚本。

相关内容