我创建了一个.sh
(或 bash) 文件,我想在 GNOME-Terminal 中为该文件创建一个命令。我知道你.sh
通过以下方式运行文件:
./file.sh
编译后,我还知道所有命令都存储在中/bin/bash
。但我似乎无法弄清楚如何创建一个可以在终端中的任何目录中调用的命令,例如:
abc
会运行abc.h
,等等。有什么建议吗?
答案1
尽管 Radu 的答案完全正确,但我觉得对于不知道某些文件位置的初学者来说,它有点不完整,因此这里逐步介绍第二种方法(使用~/bin
)。如果您想将文件存储在除 之外的其他位置~/bin
,请按照步骤 1 操作,否则,请忽略它并记住您将使用它~/bin
作为脚本文件夹。
打开终端并运行以下命令:
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
- 与原始文件夹相同,但隐藏了。如果您已经发布,
chmod +x script.sh
只需将脚本移动到要存储它们的文件夹中 - 如果不存在,请创建它。在该文件夹中,如果您将脚本存储为每次file.sh
都必须运行file.sh
,因此将它们存储为file
- 无扩展名。
答案2
shell 维护一个保存可执行文件(程序)的目录列表,并只搜索该列表中的目录。如果在搜索列表中的每个目录后仍未找到该程序,它将发出著名的消息command not found error
。此目录列表称为您的小路。可以使用以下命令查看目录列表:
echo $PATH
您可以使用以下命令将目录添加到路径中,其中*directory*
是要添加的目录的名称:
export PATH=$PATH:*directory*
更好的方法是编辑.bash_profile
文件以包含上述命令。这样,每次登录时都会自动执行该命令。
大多数现代 Linux 发行版都鼓励一种做法,即每个用户都有一个特定的目录来存放他个人使用的程序。这个目录称为bin
,是您主目录的子目录。如果您还没有,请使用以下命令创建它:
mkdir bin
将脚本移至新bin
目录,一切就绪。现在您只需输入:
my_script
您的脚本将会运行。
答案3
我建议改用别名函数。其他方法确实有效,但它们无法像您希望的那样删除“.sh”扩展名。
如果您忘记将 ${PATH}: 添加到导出路径中,它也会干扰路径系统。
您可以输入:
别名测试=“/你的/路径/到/文件/test.sh”
如果它正常工作,您需要将其添加到您的.bashrc 文件中:
sudo gedit ~/.bashrc 在文件末尾复制您的别名命令。
或者更快捷的方法(需要注意):
echo "别名测试=/path/to/folder/text.sh" >> .bashrc
请不要忘记使用>>,如果只使用>,它将仅使用 echo 命令重新覆盖整个文件。
最后
源 ~/.bashrc
更新.bashrc 命令。
Alias 可能更加强大,因为您可以添加一些输入选项,例如如下所示:
别名 gaussview='XLIB_SKIP_ARGB_VISUALS=1 $GV_DIR/gview "$@"'
希望对你有帮助。