小编fal*_*tro的帖子

如何在 bash 中明确且安全地强制使用内置命令

有一个类似的问题涉及“包装”场景,例如您想cd用调用 builtin 的命令替换cd

但是,鉴于 shellshock 等人并知道 bash 从环境中导入函数,我进行了一些测试,但找不到cd从脚本中安全调用内置函数的方法。

考虑这个

cd() { echo "muahaha"; }
export -f cd
Run Code Online (Sandbox Code Playgroud)

在此环境中使用调用的任何脚本cd都会中断(考虑类似 的效果cd dir && rm -rf .)。

有用于检查命令类型的命令(方便地称为type)和用于执行内置版本而不是函数的命令(builtincommand)。但是,瞧,这些也可以使用函数覆盖

builtin() { "$@"; }
command() { "$@"; }
type() { echo "$1 is a shell builtin"; }
Run Code Online (Sandbox Code Playgroud)

将产生以下结果:

$ type cd
cd is a shell builtin
$ cd x
muahaha
$ builtin cd x
muahaha
$ command …
Run Code Online (Sandbox Code Playgroud)

security bash

20
推荐指数
2
解决办法
2623
查看次数

标签 统计

bash ×1

security ×1