首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从bash脚本创建的全局bash脚本别名

从bash脚本创建的全局bash脚本别名
EN

Stack Overflow用户
提问于 2015-12-18 20:26:12
回答 2查看 681关注 0票数 1

我正在做一些服务,我有一个setup.sh文件,必须在第一次执行(或更新)。这个脚本应该创建某种别名,这些别名可以从这个或新的终端(也是在系统重新启动之后)访问。这个别名应该指向另一个可执行的sh文件。

setup.sh文件:

代码语言:javascript
复制
#!/bin/bash

alias customservice='./customservice.sh "$@"'

如您所见,这个customservice.sh脚本已经准备好接受多个参数。使用这个定制服务别名,我想像这样调用这个脚本:

自定义服务//显示帮助 自定义服务启动 自定义服务停止 定制服务主管bash ..。

我的customservice.sh文件:

代码语言:javascript
复制
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

也许定制脚本杀死命令也不错。它应该完全删除这个别名。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-18 21:37:10

这不是实现你的目标的最好方法。如果你能重新考虑你的做法,我建议你做以下几件事:

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

好处:

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

如果您不想使用直接的方法,制作一个接受参数的Bash别名?应该完全满足您的需要。

票数 5
EN

Stack Overflow用户

发布于 2015-12-18 20:55:52

如果您想在~/..bashrc中加载别名:

代码语言:javascript
复制
#!/bin/bash 

#add following in your setup.sh 
cat << EOF >> ~/.bashrc
alias customservice='./customservice.sh \"\$@\"'
EOF

在以bash作为默认设置的新终端上,它应该激活别名。

显然,在安装行之前,您应该使用setup.sh在~/..bashrc中使用grep,以防别名已经存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34363427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档