bash: id: 未找到命令 -bash: [: : 需要整数表达式

bash: id: 未找到命令 -bash: [: : 需要整数表达式

我正在使用 Debian GNU/Linux 10 (buster)。我可以通过 ssh 远程登录。我注意到在提供我的凭据后,它同时显示了用户和 root

Password:
-bash: id: command not found
-bash: [: : integer expression expected
root@debian:~#

我没有找到关于这个问题的任何解决方案。您对我为什么收到它有什么建议吗?

答案1

这必须位于您登录时 bash 执行的脚本之一中。

除了与您一起调试这个问题的时间之外,让我们看看这可能是什么:

man bash告诉我们这些命令必须位于

  • /etc/profile
  • ~/.bash_profile
  • ~/.bashrc
  • 或由环境变量定义的文件BASH_ENV

或者当然是由其中任何一个加载的任何文件。

所以,这就是我们需要检查的全部内容。echo "value: ${BASH_ENV}登录后检查环境变量是否设置( )。

由于它显示的是多个用户,因此主要嫌疑人是/etc/profile;我已经很久没有见过损坏的了(所有可能修改的东西都会经过很长时间才能安全地在可能读取它的不同 shell 中运行)。

您的评论看起来您的PATH条目/etc/environment可能已损坏,因此您的系统找不到可执行文件。

答案2

来自评论:

昨天,我刚刚安装了jdk17并在 /etc/environment PATH="/usr/lib/jvm/jdk-17.0.1/bin" JAVA_HOME="/usr/lib/jvm/jdk-17.0.1" 之后设置环境路径它出现了。

PATH="/usr/lib/jvm/jdk-17.0.1/bin"在包含该目录的 PATH 中设置结果仅有的id或者此后任何其他命令都不会出现在 PATH 中。如果启动文件之一包含类似以下内容:

if [ "$(id -u)" -eq 0 ]; then ...

id将找不到该命令,并且命令替换的输出将是空字符串,从而导致错误。

你的意思可能是这样的

PATH="$PATH:/usr/lib/jvm/jdk-17.0.1/bin"

添加将该目录添加到 PATH 中,但是您不能执行此操作,/etc/environment因为它不是 shell 脚本。将作业放在您的.bash_profile或其他类似的地方。

相关内容