sudo를 사용하여 명령을 실행하거나 슈퍼유저로 직접 실행하는 것의 동작이 다름 - 동일한 PATH

sudo를 사용하여 명령을 실행하거나 슈퍼유저로 직접 실행하는 것의 동작이 다름 - 동일한 PATH

xubuntu에 Eclipse를 설치하려고 하는데 java를 설치하고 " JAVA_HOME" sudo gdebi <java-package>.deb에 추가한 다음 환경을 다시 로드하고 전체 시스템을 다시 시작했습니다./etc/environmentPATH

실행 중 java --version올바른 출력이 표시됩니다.

java 12.0.1 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

슈퍼유저가 호출하면 둘 다

$ sudo su
# java --version

또는 통해

$ java --version

하지만 달리는 중

$ sudo java --version

나는 가지고있다java: command not found

하지만 달리는 중

sudo echo $PATH 

나는 가지고있다

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk-12.0.1/bin/:/snap/bin/

그리고 Java 경로가 존재합니다./usr/lib/jvm/jdk-12.0.1/bin/

어떻게 해결할 수 있나요? 또한 누군가 이런 일이 왜 발생하는지 설명해 줄 수 있습니까?

답변1

sudo가 PATH를 덮어쓴 것 같습니다.

/etc/sudoers설정이 포함되어 있는지 확인 secure_path=...하고 이 설정에 Java 경로를 추가해야 합니다.


간단한 테스트에 주의하세요. 경로를 확인하려면 다음을 수행해야 합니다.

sudo bash -c 'echo $PATH'

더 간단한 형태 는 호출 전에 확장되기 sudo echo $PATH때문에 작동하지 않습니다 .PATHsudo

관련 정보