如何使用Bash文件创建命令

我创建了一个.sh (或bash)文件,我想在GNOME-Terminal中为该文件创建一个命令。 我知道你运行.sh文件:

 ./file.sh 

编译之后,我也知道所有命令都存储在/bin/bash 。 但我似乎无法弄清楚当我在终端的任何目录中时,我可以创建一个可以调用的命令,例如:

 abc 

会运行abc.h等等有什么建议吗?

虽然Radu的答案绝对正确,但我觉得初学者不知道某些文件的位置有点不完整,所以这里是第二种方法的一步一步(使用~/bin )。 如果您想将文件存储在除~/bin之外的其他位置,请按照步骤1操作,否则请忽略它,并记住您将使用~/bin作为脚本文件夹。

  1. 打开终端并运行以下命令:

     nano .profile 

    你应该看到,在文件的末尾:

     # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi 

    如果您没有看到它,请尝试使用nano .bash_profile 请记住,您应该在~/ ,即/home/YOUR_USERNAME

    这告诉bash用户的脚本在哪里。 默认值为/home/YOUR_USERNAME/bin ,“缩写”为$HOME/bin~/bin 。 然后,您可以将其更改为您要存储脚本的任何文件夹。我的是~/.bin – 与原始文件相同,但隐藏。

  2. 如果您已经发布了chmod +x script.sh只需将脚本移动到要存储它们的文件夹中 – 如果它不存在则创建它。 在该文件夹中,如果将脚本存储为file.sh ,则必须每次都运行file.sh ,因此将它们存储为file – 无扩展名。

shell维护一个保存可执行文件(程序)的目录列表,并只搜索该列表中的目录。 如果在搜索列表中的每个目录后找不到该程序,它将发出着名的command not found error消息。 这个目录列表称为您的路径 。 您可以使用以下命令查看目录列表:

 echo $PATH 

您可以使用以下命令将目录添加到路径中,其中*directory*是要添加的目录的名称:

 export PATH=$PATH:*directory* 

更好的方法是编辑.bash_profile文件以包含上述命令。 这样,每次登录时都会自动完成。

大多数现代Linux发行版都鼓励每个用户都有自己使用的程序的特定目录。 此目录名为bin ,是主目录的子目录。 如果您还没有,请使用以下命令创建它:

 mkdir bin 

将您的脚本移动到新的bin目录中,然后就可以了。 现在你只需输入:

 my_script 

并且您的脚本将运行。