Linux bash-从脚本添加别名,但不添加脚本源


0

是否可以编写类似

#!/bin/bash
alias foo="bar -options"

并获得添加到正在运行的shell中的别名,而无需source(-ing)脚本

source myscript

会工作,但只是

myscript

不。别名在子shell(进程)中设置,但在退出脚本中丢失

无需更改父外壳别名的任何可能性 source


我认为其他问题中$(echo 'alias foo=bar')方法(可以echo用一些其他复杂的命令/脚本替换)可能是唯一的选择。但是,实际上,这是在此工作的正确工具。我不明白您为什么反对使用它。source
道文

2
这听起来像是XY问题。如果您解释为什么要避免使用source命令,则可能会得到更有用的答案。
John1024

@DaoWen-再次感谢@ John1024-XY在哪里-我只是问“是否可能”-我想避免,source因为我正在处理的脚本通过-options具有很多功能。因此,所有函数都调用时不带source,因此我尝试将使用脚本时的错误减至最少。我不喜欢,有时称它为myscript有时source myscript。因此,又一个问题是:可能与否?感谢帮助。
Tom Freudenberg 2014年

@DoaWen不能正常工作的是:$(echo 'alias foo="bar -option"')-这仍然是问题:-)
Tom Freudenberg

@TomFreudenberg Unix的设计哲学是孩子们应该能够改变父母的环境/别名/等等。如果您要在脚本之间共享别名而又不获取脚本的多余部分,则标准方法是将这些别名定义自己放在单独的文件中,然后让每个希望它们作为源文件的脚本使用。另外,您是否可以澄清以下语句:“通过-options具有很多功能”。“-选项”是什么意思?
John1024 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.