包装 shell 个内置函数
Wrapping shell built-ins
我想包装内置 Bash 命令 export
以便它记录正在导出的变量。
在像 JavaScript 这样的语言中,如果我想包装一个内置对象,我可以保存对原始对象的引用。因此,例如,我们可以使内置 alert
大写其参数:
var originalAlert = alert;
alert = function(s) {
originalAlert(s.toUpperCase());
}
但是由于 Bash 没有这样的引用,我认为不可能用相同的技术包装 export
。
我错了吗?有什么方法可以包装 bash 内置的 export
?
您可以使用 builtin
命令调用内置函数,即使它已被函数覆盖:
export() {
echo "$@"
builtin export "$@"
}
我想包装内置 Bash 命令 export
以便它记录正在导出的变量。
在像 JavaScript 这样的语言中,如果我想包装一个内置对象,我可以保存对原始对象的引用。因此,例如,我们可以使内置 alert
大写其参数:
var originalAlert = alert;
alert = function(s) {
originalAlert(s.toUpperCase());
}
但是由于 Bash 没有这样的引用,我认为不可能用相同的技术包装 export
。
我错了吗?有什么方法可以包装 bash 内置的 export
?
您可以使用 builtin
命令调用内置函数,即使它已被函数覆盖:
export() {
echo "$@"
builtin export "$@"
}