sudo找不到命令错误解决

sudo找不到命令错误解决方法 

更多分类文章:

Python | Linux | 大数据 | 数据库 | Git | Nodejs | Golang | 电脑技巧 | 计算机技术

1.修改sudoers文件

vim /etc/sudoers

将其中Defaults env_reset改成Defaults !env_reset(取消掉对PATH变量的重置)。

2.切换回普通用户如用户名为xx, 编辑用户根目录下的配置文件~/.bashr在.bashrc(家目录)中最后添加

alias sudo='sudo env PATH=$PATH'

这样sudo执行命令时所搜寻的路径就是系统的PATH变量中的路径,如想添加其他变量也是类似。

3.最后, 使配置文件生效

source ~/.bashrc

原文链接:sudo找不到命令错误解决

### 解决 `sudo: command not found` 问题 #### 环境变量被重置的原因 当使用 `sudo` 执行命令时,出于安全原因,`sudo` 默认会在新的、最小化环境中运行命令。这意味着像 `PATH` 这样的环境变量会被重置为默认值[^2]。 如果目标命令不在系统的默认路径中(如 `/usr/bin`, `/bin`, `/sbin`, `/usr/sbin`),则会触发 `command not found` 错误。 --- #### 验证当前用户的 PATH 和 sudo 的 PATH 差异 可以通过以下方式验证普通用户和超级用户下的 `PATH` 设置差异: ```bash echo $PATH sudo echo $PATH ``` 通常情况下,第二个命令的结果可能为空或者仅显示系统默认路径。这表明某些自定义路径未传递给 `sudo` 环境。 --- #### 方法一:指定完整路径调用命令 为了避免依赖于 `PATH` 变量,可以直接通过绝对路径来执行命令。例如,假设 `connect.sh` 存在于 `/home/user/scripts/` 下,则可以这样操作: ```bash sudo /home/user/scripts/connect.sh ``` 这种方法绕过了 `PATH` 查机制,因此不会受到其影响[^1]。 --- #### 方法二:修改 sudoers 文件以保留环境变量 为了使 `sudo` 使用当前用户的环境变量,可以在 `/etc/sudoers` 中设置 `env_keep += "PATH"` 或启用 `-E` 参数保持现有环境。 编辑 `/etc/sudoers` 文件前需注意安全性风险,并确保了解更改的影响。以下是具体步骤: 1. **临时测试** 使用 `-E` 参数让 `sudo` 继承当前用户的环境变量: ```bash sudo -E connect.sh ``` 2. **永久配置** 编辑 `/etc/sudoers` 文件(推荐使用 `visudo` 命令防止语法错误)并添加以下内容: ```plaintext Defaults env_keep += "PATH" ``` 完成上述调整后重新尝试原命令即可正常工作[^2]。 --- #### 方法三:更新 PATH 路径至全局范围 如果希望特定目录始终可用,可将其加入到所有用户的默认 `PATH` 中。例如将脚本所在目录 `/home/user/scripts/` 添加到 `/etc/environment` 文件里: ```plaintext PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/home/user/scripts/" ``` 保存文件后重启终端或运行以下命令立即生效: ```bash source /etc/environment ``` 此改动会影响整个系统中的所有用户及其对应的 `sudo` 行为[^3]。 --- #### 特殊场景处理 对于一些常见工具(如 Git, APT 等)缺失的情况,请确认它们已被正确安装以及是否位于标准位置。比如 Ubuntu 上的包管理器应满足以下条件才能正常使用: - 安装必要组件: ```bash sudo apt-get update && sudo apt-get install git-core software-properties-common ``` - 如果仍然遇到类似 `apt: command not found` 的问题,可能是由于源列表损坏或其他异常引起;此时建议修复源地址后再试一次前述指令[^4]。 --- ### 总结 针对 `sudo: command not found` 的根本原因是新启动的安全上下文中缺少必要的环境配置项。可通过显式提供全路径名、调整 SUDOERS 设定或是扩展公共搜索区域三种途径加以克服。 相关问题
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值