是否有可能获得正在执行的命令参数?

Is it possible to get command arguments now executing?

如果没有指定参数,我想声明附加参数的别名。

例如,

alias vimtutor=‘vimtutor $([ $# -eq 0 ] && echo ja.utf-8)’

我原以为不带参数的执行 vimtutor 会被替换为 vimtutor ja.utf-8,但它无法正常工作。

所以,我在 bash shell.

上尝试了一些测试
$ echo $#
0
$ echo a b c $#
a b c 0
$ echo [=13=]
-bash

而且我知道现在无法以正常方式执行命令参数。

现在,我声明 shell 如下所示的函数,

vimtutor(){ /usr/bin/vimtutor $([ $# -eq 0 ] && echo ja.utf-8) “$@“; }

它按预期工作,但感觉不太聪明。

有解决这个问题的办法吗?

变量 $#、$0 等在别名中使用时引用您的 bash 会话变量; bash 会话启动时使用的参数,而不是传递给别名命令的参数。

我建议您将命令放在脚本中,并为该脚本设置别名。即

$ echo 'vimtutor $([ $# -eq 0 ] && echo ja.utf-8)' > ~/vimtutor.sh
$ chmod +x ~/vimtutor.sh
$ alias vimtutor='~/vimtutor.sh'