Warm tip: This article is reproduced from serverfault.com, please click

bash-无法执行别名或功能

(bash - Can't exec an alias or function)

发布于 2020-11-30 22:07:38

我想调用一个别名,exec但不确定如何使它起作用。该示例已简化,但我认为足以突出该问题。将别名更改为函数也不起作用。直接调用别名/函数确实有效,只是在使用exec时无效。

我正在使用的命令是,

alias myalias="ls -lah /tmp"
exec myalias

但是它失败了,类似于以下内容,

bash: exec: myalias: not found

难道无法使用exec执行此操作?

Questioner
jmreicha
Viewed
0
that other guy 2020-12-01 07:04:55

你的示例中没有任何函数或别名,但是如果你确实有别名,则可以使用别名exec本身来执行它:

#!/bin/bash -i

# Define an alias
alias myalias="ls -lah /tmp"

# Allow `exec` to work for aliases
alias exec='exec '

# This now works as expected
exec myalias

这是man bash它起作用原因:

别名允许将字符串替换为简单命令的第一个单词时使用该单词。[...]如果别名值的最后一个字符为空,则还将检查别名后面的下一个命令字以进行别名扩展。