为什么 sudo 无法获取正确的 PATH 环境?

为什么 sudo 无法获取正确的 PATH 环境?

我运行命令sudo hadoop fs -ls /,它说没有找到 hadoop 命令。但我已经设置了它/etc/profile,并且我也通过切换到 root 用户来验证它。

这里发生了什么?

答案1

您可能需要为 sudo 创建一个 sudoers.d 文件来永久保存您的环境变量。

警告!此方法使用 sudoers 文件,如果出现任何问题,您可能会被 sudo 锁定。请谨慎操作。

  1. cd ~/Desktop
  2. touch 'myfile'
  3. 在编辑器中打开该文件。
  4. 添加以下行(下面提到的两个空行都非常重要):

    <This must be a blank line>
    Defaults env_keep += "your_variable_name_within_quotes"
    <This must be a blank line>
    
  5. sudo chmod 440 'myfile'

  6. sudo mv 'myfile' '/etc/sudoers.d/myfile'
  7. 现在打开:'/etc/sudoers'并确保有以下行:#includedir /etc/sudoers.d
  8. 如果没有的话,不要编辑它,而是sudo visudo
  9. 将该行附加到末尾并按Ctrl+X保存。
  10. 重新启动并尝试使用该环境变量执行 sudo 命令。

答案2

cron 使用自己的默认 PATH,类似于/bin:/usr/bin。请参阅cron(8)crontab(5)手册页。

相关内容