我想使用某些在 Python/Perl/Ruby 上运行的工具。例如,myProgram.py
存储在 ~/folder1/folder2/ 中。我想使用来自 bash 的输入来运行它,例如>>> myProgram -h
。
到目前为止,我已经读过两种做类似事情的方法:
- 在 bin 目录中创建文件:
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
- 编辑
~/.bashrc
永久别名:
# in ~/.bashrc
alias myProgram='python ~/folder1/folder2/myProgram.py'
不幸的是,第一种方法似乎不适用于非 bash 文件(据我尝试过),而第二种方法只是返回一个错误,例如myProgram: command not found
。
我应该如何制作 bash 命令以便通过输入命令来快速访问我的 Python/Perl/Ruby 工具?
答案1
要运行这样的脚本,您需要三样东西:
- 脚本必须位于变量中列出的目录中
$PATH
。如果您将脚本放入~/bin
,要在登录时执行它们而不指定文件的完整路径,则需要.bashrc
通过添加以下行来扩展路径export PATH=$PATH:~/bin
。要查看路径中已有哪些目录,您只需将其打印出来即可echo $PATH
。要对文件进行任何更改,.bashrc
您需要重新登录(或重新运行 bash)。 - 脚本必须设置可执行位权限。为此,请执行命令
chmod +x /path/to/script
- 脚本必须告知使用哪个解释器来运行它。为此,脚本中有一个特殊的第一行,称为 shebang:
#!/path/to/interpreter
。对于 Python 来说,它将是#!/usr/bin/python
。由于不同的操作系统可能在不同的地方有二进制文件,因此建议使用 shebang 形式,#!/usr/bin/env python
无论它在哪里,它都会执行默认的 Python 解释器。
更新:根据评论,我正在使用符号链接更新此答案。如果您只是想让已安装的工具更易于访问,则不必创建脚本。您只需要找到该工具的可执行文件(或者如果它是脚本,则使其可执行(如果它尚未可执行)),然后将符号链接(参见man ln
)放入 $PATH 目录中(或将带有可执行文件的目录添加到 $PATH)。
注意:只需使脚本可执行(参见 2.)并添加alias
到您的.bashrc
意愿中也可以,但每次创建新脚本时添加新别名非常不方便。