我希望能够通过用参数调用它来创建我的脚本的别名。
$ ./devbox alias
$ devbox <other command of my script>
以下是我的bash脚本的代码:
#!/bin/bash
shopt -s expand_aliases
aliasDevbox()
{
alias devbox="./devbox"
}
parseCli()
{
command=$1
case "$command" in
"alias") aliasDevbox
;;
esac
}
parseCli "$@"
它实际上无效:command not found
(我知道如果我的代码alias devbox="./devbox"
位于我的脚本的开头,我就可以这样调用它source ./devbox
并且它会起作用。)
谢谢!
答案 0 :(得分:3)
这不会也不会起作用,因为./devbox
是shell的子进程,子进程无法在父shell中设置别名。 (同样,它们也不能改变环境变量。)
我可以建议解决方法,但退一步,这真的需要吗?通常,用户将在登录脚本(例如.bashrc
)中设置别名,以便别名在他们启动的任何新shell中自动可用。我的建议只是写一些文档,建议用户为您的工具创建一个别名,以便于使用。