bash: id: 명령을 찾을 수 없음 - bash: [: : 정수 표현식이 필요합니다.

bash: id: 명령을 찾을 수 없음 - bash: [: : 정수 표현식이 필요합니다.

저는 Debian GNU/Linux 10(buster)을 사용하고 있습니다. SSH를 통해 원격으로 로그인할 수 있습니다. 자격 증명을 제공한 후 사용자와 루트가 모두 표시되는 것을 확인했습니다.

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오랫동안 깨진 것을 본 적이 없습니다. 수정될 수 있는 모든 내용을 읽을 수 있는 다른 셸에서 실행하는 데 시간이 오래 걸립니다.

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쉘 스크립트가 아니기 때문에 이렇게 하십시오 . 과제를 귀하의 장소 .bash_profile나 다른 유사한 장소에 두십시오.

관련 정보