这个问题有一点背景——它不会持续很长时间,但最好我能正确地解释一切;
昨晚我去我的 CentOS / DirectAdmin 设置上设置一个 SVN 存储库 - 我回到我的笔记并执行“htpasswd -cm passwd myuser”。
我以 root 身份登录,但出现“未找到命令”?几周前我第一次设置 SVN 时,这个问题一直没有解决。
于是我运行了 whereis htpasswd 并在 /usr/bin/htpasswd 中找到它。我运行了 which htpasswd 并得到了以下结果:
/usr/bin/which:没有 htpasswd (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/admin/bin)
奇怪?我从 /usr/bin/htpasswd 建立了一个符号链接,现在它可以正常工作了。后来我又去执行“service httpd restart”,但“service”也出现了同样的问题。
我的问题:
您认为发生了什么?为什么这些会“消失”?
重新设置“服务”的最佳方法是什么,以便只有用户“root”和“admin”可以使用它?它存在于/sbin/service
答案1
echo $PATH
它应该与上面列出的“哪个”相匹配,并且不是包括/sbin,这似乎意味着您提升了您的权限,但却将环境保留在您的普通用户之外?
您通常如何登录此框?您是否执行“su”或“su -”来提升权限?
如果您直接以 root 身份登录,则需要查看 shell 配置。这可能是 Bash,因此请查看 ~/.bash_profile 和 ~/.bashrc 以查看是否定义了 PATH,如果没有,则 /etc 中的系统范围默认值将应用于您的会话。
作为一个快速修复,这应该有效:
export PATH="/usr/local/sbin:/usr/sbin:/sbin:${PATH}"
只需将 /sbin 添加到 PATH 环境变量中即可不是在登录会话之间永久存在。您需要找到 PATH 的定义位置(见上文)才能彻底修复。