如何编写一个 bash 脚本来为父 shell 设置别名?

如何编写一个 bash 脚本来为父 shell 设置别名?

我正在尝试编写一个脚本来为我的 bash shell 设置别名,但我不想source自动设置.bashrc——我需要在我的终端的子集中拥有别名。

是否可能alias在脚本中运行命令并让别名命令为运行该脚本的 shell 工作?

所需功能:

$ alias
# ... no output here
$ ./my-script
$ alias
alias foo='bar'
alias alpha='beta'
...

答案1

别名对于创建它们的 shell 来说是私有的。它们既不能被导出,也不能从父 shell 访问。

最简单的解决方案是将别名分解为单独的文件,正如您所建议的那样,然后手动获取该文件,或者向您的文件添加一个函数.bashrc,该函数将在调用时获取它们。

function extra-aliases {
     . /path/to/file/containing/additional/aliases
}

答案2

不可以。别名是 shell 和子 shell 私有的。

答案3

不。

但提供一个“解决方案”,虽然我不知道这是否是你想要的。

尝试:

# alias
... nothing
# . ./myscript.sh
# alias
alias ls='ls -laR'

注意.之前./myscript.sh。这是source

或者为什么不用它创建一个别名(在 .bashrc 中):

alias mkalias="alias ls='ls -laR'; alias ll='ls -l'"

相关内容