从 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,以防别名已经存在。

这不是实现您的目标的最佳方式。如果您可以重新考虑您的方法,我建议您执行以下操作:

  1. 使用您的 bash 启动文件,又名 ~/.bashrc(或类似文件)来设置脚本的路径:export PATH=$PATH:/path/to/script/dir
  2. 将您的脚本命名为 customservice,而不是 customservice.sh
  3. Shebang 添加到您的脚本中,例如 #!/usr/bin/sh#!/bin/bash,具体取决于您需要执行它的内容和解释器的位置。或者,对于通用方法,您可以使用 #!/usr/bin/env bash.

好处:

  1. 你让简单的事情变得简单。
  2. 您没有为您的操作添加别名层 - 直接调用脚本。
  3. 您不需要找到一种方法将 $@ 传递给别名,这可能很脏。

如果您不想使用直接方法,Make a Bash alias that takes a parameter? 应该可以完全满足您的需求。