gpt4 book ai didi

linux - 从 bash 脚本创建的全局 bash 脚本别名

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:59 27 4
gpt4 key购买 nike

我正在做一些服务,我有一个 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 ] && [ $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

也许 customscript kill 命令也不错。它应该完全删除这个别名。

也许,如果这种方法被弃用,我愿意寻求更好的解决方案。

最佳答案

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

  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?应该完全满足您的需求。

关于linux - 从 bash 脚本创建的全局 bash 脚本别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34363427/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com