我想在bash -c
构造内运行别名。
该bash
手册说:
如果外壳不是交互式的,则别名不会扩展,除非
expand_aliases
使用以下命令设置外壳选项shopt
在此示例中,为什么hi
在expand_aliases
显式设置时找不到别名?
% bash -O expand_aliases -c "alias hi='echo hello'; alias; shopt expand_aliases; hi"
alias hi='echo hello'
expand_aliases on
bash: hi: command not found
我在跑步GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)
。
上下文:我希望能够以空闲优先级运行别名,例如包含以下内容的脚本:
#!/bin/bash
exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s expand_aliases; $(shell-quote "$@")"
我不想使用它,bash -i
因为我不想.bashrc
被阅读。
bash -c "hi () { echo hello; }; hi"
输出hello
。
zsh
:zsh别名即使使用选项也不会扩展complete_aliases