我正在尝试编写一个脚本来为我的 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'"