如何在bash中创建可携带参数打开任意应用的自定义命令?
为任意程序创建自定义快捷命令的方法
你之前用sh -c传参失效的核心原因是:sh -c后的第一个参数是要执行的完整脚本内容,后续传入的参数是脚本的位置参数$0/$1,而非直接传给目标程序的参数,自然无法按预期生效。
你可以用以下几种通用方法实现和code path/to/file体验一致的快捷命令:
方法1:创建永久别名(适合简单场景,配置最快)
- 打开你当前使用的shell的配置文件,Bash用户编辑
~/.bashrc,Zsh用户编辑~/.zshrc,在文件末尾添加如下内容:
alias 自定义命令名="/path/to/目标程序的完整路径"
- 以配置VS Code的快捷命令为例,写法如下:
alias code="/path/to/vscode.exe"
- 保存文件后执行
source ~/.bashrc(对应你使用的shell的配置文件)即可立即生效,之后直接输入code 目标文件路径就能正常传参打开文件。
方法2:封装为独立shell脚本(适合需要额外启动逻辑的场景)
如果程序启动需要搭配环境变量配置、参数预处理等额外逻辑,可以单独封装脚本:
- 在系统默认PATH目录
/usr/local/bin下创建和快捷命令同名的文件,比如命名为code,内容如下:
#!/bin/bash # 此处可添加任意自定义启动逻辑,比如设置环境变量、切换目录等 /path/to/vscode.exe "$@"
其中"$@"的作用是把用户传入的所有参数原封不动传递给目标程序,完全不会出现传参异常的问题。
2. 给脚本添加可执行权限:
sudo chmod +x /usr/local/bin/code
配置完成后就可以直接像原生命令一样调用,不需要做额外配置。
方法3:添加程序目录到系统PATH(不需要写别名/脚本)
如果程序本身的可执行文件名就足够简洁,你可以直接把程序所在的目录加入系统PATH变量:
- 同样修改shell配置文件,在末尾添加如下内容:
export PATH="$PATH:/path/to/程序所在的目录"
- 配置生效后,你直接输入程序的可执行文件名加参数就能调用,不需要写完整路径。
内容的提问来源于stack exchange,提问作者Reid Moffat
相关产品推荐
相关产品推荐

