sudo 找不到命令 command not found 解决方案

有时候我们普通用户可以用的命令,用 sudo 加权限之后却报错 command not found:

connect.sh
network-manager: Permission denied

sudo connect.sh
sudo: command not found

原因在于,connect.sh 这个脚本仅存在于该用户的环境变量中:

where connect.sh 
/home/fdl/bin/connect.sh

当使用 sudo 时,系统会使用 /etc/sudoers 这个文件中规定的该用户的权限和环境变量,而这个脚本在 /etc/sudoers 环境变量目录中当然是找不到的。
解决方法是使用脚本文件的路径,而不是仅仅通过脚本名称

sudo /home/fdl/bin/connect.sh
### 解决 `mysqld_safe` 命令到的方法 当遇到 `-bash: mysqld_safe: command not found` 错误时,通常是因为系统的环境变量 PATH 中缺少 MySQL 安装目录的位置。可以通过调整环境变量来解决问题。 #### 方法一:临时解决方案 如果只是偶尔需要使用 `mysqld_safe` 启动 MySQL 服务,则可以直接指定完整的路径来调用该命令。例如: ```bash /opt/soft/mysql/bin/mysqld_safe --skip-grant-tables & ``` 这种方法不需要更改任何配置文件,在当前会话结束之后也不会影响其他程序的正常工作[^4]。 #### 方法二:永久性修正方案 为了使所有用户都能方便地访问到这个命令而无需每次都输入完整路径,可以考虑将 MySQL 的 bin 文件夹加入全局环境变量中去。具体操作如下所示: 编辑 `/etc/profile` 文件并追加一行用于扩展 PATH 变量的内容: ```bash echo "export PATH=\$PATH:/opt/soft/mysql/bin" >> /etc/profile source /etc/profile ``` 上述命令实现了向现有的 PATH 添加新的路径,并立即生效新设置以便即时可用这些新增加的可执行文件位置信息。 另外一种方式则是创建符号链接至标准路径下,比如 `/usr/local/bin` 或者 `/usr/sbin` 这样的公共区域里边,这样做的好处是可以让所有的 shell 用户都能够轻松到所需的工具而不必担心版本差异带来的兼容性问题。 ```bash ln -s /opt/soft/mysql/bin/mysqld_safe /usr/local/bin/ ``` 对于某些特定情况下可能还需要重启计算机才能完全应用所做的改动,不过大多数时候只需要重新加载一次 profile 即可实现目的。 通过以上两种方法之一就可以有效地解决 Linux 系统中的 `sudo mysqld_safe command not found` 错误了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alkali!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值