是否可以编写类似
#!/bin/bash
alias foo="bar -options"
并获得添加到正在运行的shell中的别名,而无需source
(-ing)脚本
source myscript
会工作,但只是
myscript
不。别名在子shell(进程)中设置,但在退出脚本中丢失
无需更改父外壳别名的任何可能性 source
这听起来像是XY问题。如果您解释为什么要避免使用
—
John1024
source
命令,则可能会得到更有用的答案。
@DaoWen-再次感谢@ John1024-XY在哪里-我只是问“是否可能”-我想避免,
—
Tom Freudenberg 2014年
source
因为我正在处理的脚本通过-options具有很多功能。因此,所有函数都调用时不带source
,因此我尝试将使用脚本时的错误减至最少。我不喜欢,有时称它为myscript
有时source myscript
。因此,又一个问题是:可能与否?感谢帮助。
@DoaWen不能正常工作的是:
—
Tom Freudenberg
$(echo 'alias foo="bar -option"')
-这仍然是问题:-)
@TomFreudenberg Unix的设计哲学是孩子们不应该能够改变父母的环境/别名/等等。如果您要在脚本之间共享别名而又不获取脚本的多余部分,则标准方法是将这些别名定义自己放在单独的文件中,然后让每个希望它们作为源文件的脚本使用。另外,您是否可以澄清以下语句:“通过-options具有很多功能”。“-选项”是什么意思?
—
John1024 2014年
$(echo 'alias foo=bar')
方法(可以echo
用一些其他复杂的命令/脚本替换)可能是唯一的选择。但是,实际上,这是在此工作的正确工具。我不明白您为什么反对使用它。source