我可以做标题中描述的事情吗?
假设我有一个脚本“initstuff.sh”,在该脚本中有一个别名“shalias”运行一些东西。将“shalias”放入我的.bashrc中是不可能的,因为在上下文中存在带有“shalias”的initstuff2.sh,带有“shalias”的initstuff3.sh......等等,我必须运行每个以相同的频率。
现在假设我登录到我的终端,我想从 initstuff2 运行“shalias”,参数为“firstArgVal”和“secondArgVal”。
在我的 .bashrc 中我有:
alias runinit1=". /initstuff1.sh"
alias runinit2=". /initstuff2.sh"
因此,使用这些参数从 initstuff2 运行“shalias”需要两行:
$ runinit2
$ shalias -firstArgVal -secondArgVal
我怎样才能让它在一行中运行?特别是我想在 .bashrc 中添加如下内容:
alias runinit2normal:". /initstuff2.sh ; shalias -firstArgVal -secondArgVal
这不起作用,我得到:
bash: shalias: command not found
如果我调用 runinit2normal 两次,它就会起作用,因为 initstuff2.sh 有机会在第一次使用中运行,所以 shalias 已经存在,可以在第二次调用中使用,但这有点违背了使用单个别名来执行此操作的目的。使用 && 代替 ;也不行。我也尝试将其作为函数来执行,但仍然没有运气,并且为了防止出现一些奇怪的行为,我还尝试创建另一个别名,该别名调用 runinit2normal 两次,因为在调用它两次时在命令行中调用它(因此失败一次)。有什么方法可以让我在 bashrc 中创建一个“runinit2normal”别名,它实际上可以按照我的预期工作吗?
答案1
由于措辞,您的问题并不是最容易理解的,但我认为如果您设置此 bash 选项,您可能会发现您已经拥有的内容将起作用。
shopt -s expand_aliases