저는 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
나 다른 유사한 장소에 두십시오.