如何创建自定义 bash 命令?(运行 python、perl、ruby 文件)

如何创建自定义 bash 命令?(运行 python、perl、ruby 文件)

我想使用某些在 Python/Perl/Ruby 上运行的工具。例如,myProgram.py存储在 ~/folder1/folder2/ 中。我想使用来自 bash 的输入来运行它,例如>>> myProgram -h

到目前为止,我已经读过两种做类似事情的方法:

  1. 在 bin 目录中创建文件:
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
  1. 编辑~/.bashrc永久别名:
# in ~/.bashrc
alias myProgram='python ~/folder1/folder2/myProgram.py'

不幸的是,第一种方法似乎不适用于非 bash 文件(据我尝试过),而第二种方法只是返回一个错误,例如myProgram: command not found

我应该如何制作 bash 命令以便通过输入命令来快速访问我的 Python/Perl/Ruby 工具?

答案1

要运行这样的脚本,您需要三样东西:

  1. 脚本必须位于变量中列出的目录中$PATH。如果您将脚本放入~/bin,要在登录时执行它们而不指定文件的完整路径,则需要.bashrc通过添加以下行来扩展路径export PATH=$PATH:~/bin。要查看路径中已有哪些目录,您只需将其打印出来即可echo $PATH。要对文件进行任何更改,.bashrc您需要重新登录(或重新运行 bash)。
  2. 脚本必须设置可执行位权限。为此,请执行命令chmod +x /path/to/script
  3. 脚本必须告知使用哪个解释器来运行它。为此,脚本中有一个特殊的第一行,称为 shebang:#!/path/to/interpreter。对于 Python 来说,它将是#!/usr/bin/python。由于不同的操作系统可能在不同的地方有二进制文件,因此建议使用 shebang 形式,#!/usr/bin/env python无论它在哪里,它都会执行默认的 Python 解释器。

更新:根据评论,我正在使用符号链接更新此答案。如果您只是想让已安装的工具更易于访问,则不必创建脚本。您只需要找到该工具的可执行文件(或者如果它是脚本,则使其可执行(如果它尚未可执行)),然后将符号链接(参见man ln)放入 $PATH 目录中(或将带有可执行文件的目录添加到 $PATH)。

注意:只需使脚本可执行(参见 2.)并添加alias到您的.bashrc意愿中也可以,但每次创建新脚本时添加新别名非常不方便。

相关内容