如何制作别名myscript =" ./ myscript"从bash脚本内部使用它

时间:2017-10-19 06:26:56

标签: bash shell

在脚本中,我想创建一个别名来执行这样的脚本:

$ devbox

所以脚本包含这个:

#!/bin/bash

shopt -s expand_aliases

alias devbox="./devbox"

echo "Done"

但它不起作用:

zsh: command not found: devbox

编辑:

如果我想提出一个论点"别名"到我的脚本($。/ devbox别名)来设置" devbox"别名?

2 个答案:

答案 0 :(得分:1)

您想在脚本上调用source

$ cat devbox
#!/bin/bash

echo "Hello from devbox"
$ cat setAlias.sh
#!/bin/bash

alias devbox="./devbox"

echo "Done"
$ source ./setAlias.sh
Done
$ devbox
Hello from devbox
$

答案 1 :(得分:1)

首先,您似乎使用zsh作为shell,但是您在bash中编写了脚本。其次,更重要的是,脚本是在子进程中执行的,因此脚本中定义的任何别名仅在该脚本中可见。

如果要在当前shell的上下文中执行脚本,则必须source而不是执行它:

source my_script_+with_alias_definitions

. my_script_+with_alias_definitions