我正在做一些服务,我有一个setup.sh文件,必须在第一次执行(或更新)。这个脚本应该创建某种别名,这些别名可以从这个或新的终端(也是在系统重新启动之后)访问。这个别名应该指向另一个可执行的sh文件。
setup.sh文件:
#!/bin/bash
alias customservice='./customservice.sh "$@"'如您所见,这个customservice.sh脚本已经准备好接受多个参数。使用这个定制服务别名,我想像这样调用这个脚本:
自定义服务//显示帮助 自定义服务启动 自定义服务停止 定制服务主管bash ..。
我的customservice.sh文件:
if [ $# -eq 1 ] && [ $1 = "start" ]; then
//do something
elif [ $# -eq 1 ] && [ $1 = "stop" ]; then
//do something
elif [ $# > 1 ] && [ $1 = "exec" ]; then
//do stuff with ${@:2}
else
echo "help"
fi也许定制脚本杀死命令也不错。它应该完全删除这个别名。
也许,如果这种方法被否决,我愿意寻求更好的解决方案。
发布于 2015-12-18 21:37:10
这不是实现你的目标的最好方法。如果你能重新考虑你的做法,我建议你做以下几件事:
~/.bashrc (或类似文件))设置脚本的路径:export PATH=$PATH:/path/to/script/dircustomservice,而不是customservice.sh。#!/usr/bin/sh或#!/bin/bash,这取决于执行它所需的内容以及解释器的位置。或者,对于通用方法,您可以使用#!/usr/bin/env bash。好处:
$@传递给别名的方法,别名可能很脏。如果您不想使用直接的方法,制作一个接受参数的Bash别名?应该完全满足您的需要。
发布于 2015-12-18 20:55:52
如果您想在~/..bashrc中加载别名:
#!/bin/bash
#add following in your setup.sh
cat << EOF >> ~/.bashrc
alias customservice='./customservice.sh \"\$@\"'
EOF在以bash作为默认设置的新终端上,它应该激活别名。
显然,在安装行之前,您应该使用setup.sh在~/..bashrc中使用grep,以防别名已经存在。
https://stackoverflow.com/questions/34363427
复制相似问题