我看过的所有文档似乎都表明,在别名和shell函数中,名称不能包含空格。
我正在尝试做的是让其他管理员(作为root用户)更难以针对我们的Pass实现运行命令(doc:https://www.passwordstore.org/)。它仍然是可能的,但我希望能像“传递rm $ anyValueTheyInput”这样的命令,并将其称为“echo'你不能这样做'”。当然,他们是管理员,他们可以更改别名,但它有望防止意外删除密码。
BASH有可能吗?这些都将在RHEL或Centos盒子上。
答案 0 :(得分:4)
在bash
中无法使用参数对整个命令进行别名化(如果甚至可以在任何UNIX shell中使用它)。
你可以做的是创建一个pass
函数来捕获所有不需要的参数包并转发所有其他参数包
到command pass
:
pass()
{
if [ rm = "$1" ]; then
>&2 printf '%s\n' "You can't do that"
return 1
fi
#more checks... ?
#...
#forward the sanitized argument pack into the actual pass binary/script
command pass "$@"
}