从 bash 脚本创建的全局 bash 脚本别名
Global bash script alias created from bash script
我正在做一些服务,我有一个 setup.sh 文件,必须在第一次执行(或更新时)。这个脚本应该创建某种别名,可以从这个终端或新终端访问(也可以在系统重启后)。这个别名应该指向另一个可执行的 sh 文件。
setup.sh 文件:
#!/bin/bash
alias customservice='./customservice.sh "$@"'
如您所见,此 customservice.sh 脚本已准备好接受多个参数。使用这个自定义服务别名,我想这样调用这个脚本:
customservice //show help
customservice start
customservice stop
customservice exec bash
...
我的 customservice.sh 文件:
if [ $# -eq 1 ] && [ = "start" ]; then
//do something
elif [ $# -eq 1 ] && [ = "stop" ]; then
//do something
elif [ $# > 1 ] && [ = "exec" ]; then
//do stuff with ${@:2}
else
echo "help"
fi
也许 customscript kill 命令也不错。它应该完全删除这个别名。
也许,如果不推荐使用这种方法,我愿意寻求更好的解决方案。
如果您希望在 ~/.bashrc:
中加载别名
#!/bin/bash
#add following in your setup.sh
cat << EOF >> ~/.bashrc
alias customservice='./customservice.sh \"$@\"'
EOF
在默认设置为 bash shell 的新终端上,它应该激活别名。
显然,在安装行之前,您应该在 ~/.bashrc 中使用 setup.sh grep,以防别名已经存在。
这不是实现您的目标的最佳方式。如果您可以重新考虑您的方法,我建议您执行以下操作:
- 使用您的 bash 启动文件,又名
~/.bashrc
(或类似文件)来设置脚本的路径:export PATH=$PATH:/path/to/script/dir
- 将您的脚本命名为
customservice
,而不是 customservice.sh
。
- 将 Shebang 添加到您的脚本中,例如
#!/usr/bin/sh
或 #!/bin/bash
,具体取决于您需要执行它的内容和解释器的位置。或者,对于通用方法,您可以使用 #!/usr/bin/env bash
.
好处:
- 你让简单的事情变得简单。
- 您没有为您的操作添加别名层 - 直接调用脚本。
- 您不需要找到一种方法将
$@
传递给别名,这可能很脏。
如果您不想使用直接方法,Make a Bash alias that takes a parameter? 应该可以完全满足您的需求。
我正在做一些服务,我有一个 setup.sh 文件,必须在第一次执行(或更新时)。这个脚本应该创建某种别名,可以从这个终端或新终端访问(也可以在系统重启后)。这个别名应该指向另一个可执行的 sh 文件。
setup.sh 文件:
#!/bin/bash
alias customservice='./customservice.sh "$@"'
如您所见,此 customservice.sh 脚本已准备好接受多个参数。使用这个自定义服务别名,我想这样调用这个脚本:
customservice //show help
customservice start
customservice stop
customservice exec bash
...
我的 customservice.sh 文件:
if [ $# -eq 1 ] && [ = "start" ]; then
//do something
elif [ $# -eq 1 ] && [ = "stop" ]; then
//do something
elif [ $# > 1 ] && [ = "exec" ]; then
//do stuff with ${@:2}
else
echo "help"
fi
也许 customscript kill 命令也不错。它应该完全删除这个别名。
也许,如果不推荐使用这种方法,我愿意寻求更好的解决方案。
如果您希望在 ~/.bashrc:
中加载别名#!/bin/bash
#add following in your setup.sh
cat << EOF >> ~/.bashrc
alias customservice='./customservice.sh \"$@\"'
EOF
在默认设置为 bash shell 的新终端上,它应该激活别名。
显然,在安装行之前,您应该在 ~/.bashrc 中使用 setup.sh grep,以防别名已经存在。
这不是实现您的目标的最佳方式。如果您可以重新考虑您的方法,我建议您执行以下操作:
- 使用您的 bash 启动文件,又名
~/.bashrc
(或类似文件)来设置脚本的路径:export PATH=$PATH:/path/to/script/dir
- 将您的脚本命名为
customservice
,而不是customservice.sh
。 - 将 Shebang 添加到您的脚本中,例如
#!/usr/bin/sh
或#!/bin/bash
,具体取决于您需要执行它的内容和解释器的位置。或者,对于通用方法,您可以使用#!/usr/bin/env bash
.
好处:
- 你让简单的事情变得简单。
- 您没有为您的操作添加别名层 - 直接调用脚本。
- 您不需要找到一种方法将
$@
传递给别名,这可能很脏。
如果您不想使用直接方法,Make a Bash alias that takes a parameter? 应该可以完全满足您的需求。