别名必须在 Bash 子进程中

别名必须在 Bash 子进程中

Bash 中的别名如何在分叉的子进程 Bash 中失败:

alias al='echo hello '
$ al foobar
hello foobar

$ alias al='echo hello ' ; bash
$ al
bash: al: command not found

如何使其在后者 Bash 上发挥与原先完全相同的功能?

答案1

据我所知,父 shell 中已经定义的别名无法导出(提供) 到子 shell/进程,但可以通过获取定义它们的文件来提供给子 shell,例如~/.bashrc...换句话说,在子 shell 中重新定义它们。

另一方面,函数可以通过export -f name... 导出。因此,您可以像这样使用函数:

$ function al { echo "hello $1"; }; export -f al; bash
$
$ al
hello
$
$ al again
hello again

相关内容