我在 AWS 上的 Ubuntu EC2 实例上,我的 ~/.bashrc 文件中有以下内容:
docker(){
sudo docker "$@"
}
export -f docker;
因为我信任 docker,所以我基本上使用 sudo 运行所有 docker 命令,这就像我在远程服务器上为 DevOps 体验所做的最好的事情。但是,我不知道它为什么起作用 - 我认为 docker 函数会递归地调用自身,直到某个堆栈爆炸或其他原因。我的猜测是 sudo 只会调用命令而不是 bash 函数?
我尝试这样做,例如:
docker(){
sudo command docker "$@"
}
export -f docker;
但当我打电话时docker ps
我得到了这个:
sudo:命令:找不到命令
有人知道这是怎么回事吗?
答案1
sudo
检查PATH
(通常是“ secure_path
”,甚至不检查您的用户或 root 的完整权限PATH
)命令因此不适用于内置函数和函数。 是一个内置命令,sudo在您的命令而不是您的函数中command
使用该命令。docker
PATH
你可以通过创建一个指向command
内置函数的包装器脚本(或与您的 docker 函数类似)并将该脚本放入PATH
解决此问题,但是您不应该去做。您应该在sudo
需要时运行 docker 本身。