通过使用参数:./myscript别名调用脚本来创建脚本的别名

时间:2017-10-19 12:45:56

标签: bash shell

我希望能够通过用参数调用它来创建我的脚本的别名。

$ ./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并且它会起作用。)

谢谢!

1 个答案:

答案 0 :(得分:3)

这不会也不会起作用,因为./devbox是shell的子进程,子进程无法在父shell中设置别名。 (同样,它们也不能改变环境变量。)

我可以建议解决方法,但退一步,这真的需要吗?通常,用户将在登录脚本(例如.bashrc)中设置别名,以便别名在他们启动的任何新shell中自动可用。我的建议只是写一些文档,建议用户为您的工具创建一个别名,以便于使用。