내 질문은 다른 공개와 관련이 있습니다.질문. 내 echo $PATH는 다음과 같은 출력을 제공합니다.
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sahil/.rvm/bin{}:/home/android-sdks/{}:/home/android-sdks/platform-tools/{}:/home/android-sdks/tools/{}:/home/sahil/android-sdks/tools{}:/home/sahil/android-sdks/tools:/home/sahil/android-sdks/platform-tools/
하지만 달리는 중
ifconfig
나에게 다음과 같은 결과를 제공합니다
Command 'ifconfig' is available in '/sbin/ifconfig'
The command could not be located because '/sbin' is not included in the PATH environment variable.
This is most likely caused by the lack of administrative privileges associated with your user account.
ifconfig: command not found
다른 질문에 주어진 것처럼 명령을 실행 한 후
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
그것은 작동한다ifconfig하지만 Ruby Rails 또는 rvm의 다른 명령은 차단합니다.
이 문제를 해결하는 방법에 대한 도움을 구합니다. 또한 왜 이런 일이 발생합니까?
답변1
아래 명령을 시도해 보세요
export PATH=$PATH:/usr/sbin
또는 (모든 경로를 설정하려는 경우)
export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
답변2
원본 $PATH
(게시한 줄은 읽기가 쉽지 않음):
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:
/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:
/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:
/usr/local/bin:/usr/bin:/bin:/usr/games:
/home/sahil/.rvm/bin{}:
/home/android-sdks/{}:
/home/android-sdks/platform-tools/{}:
/home/android-sdks/tools/{}:
/home/sahil/android-sdks/tools{}:
/home/sahil/android-sdks/tools:
/home/sahil/android-sdks/platform-tools/
당신은 /usr/local/bin
, /usr/bin
및 을 가지고 있습니다 /bin
. 이미 알고 있듯이 ifconfig
안에 있습니다 /sbin
.
따라서 해당 경로가 설정된 곳에 /sbin
.
보다루비젬이를 수행하는 방법에 대한 문서.
답변3
/sbin은 일반적으로 경로의 일부입니다. Fedora와 같은 다른 배포판에는 일반 사용자를 위한 PATH가 없지만 Ubuntu는 항상 그렇습니다. /etc/environment 파일을 확인하고 해당 파일이 유효한지, 경로에 /sbin이 추가되었는지 확인하는 것이 좋습니다. 내가 달릴 때고양이 /etc/환경, 다음과 같은 결과가 나타납니다.
adnan@adnan-laptop:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
보시다시피/sbin이미 PATH 환경 변수의 일부입니다. 파일의 내용이 동일한 경우 해당 권한을 확인하고 그렇지 않으면 이 파일의 PATH에 /sbin을 추가하십시오. 나에게 권한은 다음과 같습니다.
adnan@adnan-laptop:~$ ls -l /etc/environment
-rw-r--r-- 1 root root 79 2009-10-29 01:55 /etc/environment
답변4
변수 는 무엇입니까 PATH
?
PATH
디렉토리 경로 목록입니다. 사용자가 전체 경로를 제공하지 않고 명령을 입력하면 이 목록을 검사하여 해당 명령으로 연결되는 경로가 포함되어 있는지 확인합니다. 이 변수의 경로 순서는 명령이 검색되는 순서를 나타냅니다. 여러 디렉터리에 동일한 이름의 프로그램이 있는 경우 목록 시작 부분(왼쪽)에 가장 가까운 폴더에 있는 프로그램이 검색됩니다. 실행.
Ruby Rails 및 rvm에서 다른 명령이 차단된 이유는 다음을 실행했기 때문입니다.
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
PATH
그 결과포함되어 있지 않다해당 프로그램의 폴더, 즉:
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin
대신 당신이 해야 할 일은 /sbin
당신 자신의 에 추가하는 것입니다 PATH
.
/sbin
추가 하는 방법PATH
기본적으로 항상 환경에 있으므로 PATH
내보낼 필요가 없으며 디렉토리만 추가하면 됩니다 /sbin
. 그렇게하려면 bash에서 실행할 수 있습니다
PATH="$PATH:/sbin"
이제 경로는 다음과 같아야 합니다.
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sahil/.rvm/bin{}:/home/android-sdks/{}:/home/android-sdks/platform-tools/{}:/home/android-sdks/tools/{}:/home/sahil/android-sdks/tools{}:/home/sahil/android-sdks/tools:/home/sahil/android-sdks/platform-tools/:/sbin
하지만 이 변경 사항은 영구적이지 않습니다. 일단 닫으면 현재 세션이 PATH
이전 값으로 다시 로드됩니다. 영구적으로 적용하려면 이 변경 사항을 ~/.profile
파일에 추가해야 합니다. 이를 수행하는 한 가지 방법은 다음과 같습니다.
echo 'PATH="$PATH:/sbin"' >> ~/.profile
이제 현재 셸에서 "~/.profile"의 내용을 실행하기만 하면 됩니다.
source ~/.profile
이제 시작할 준비가 되었습니다. 현재 쉘뿐만 아니라 향후 모든 세션에도 PATH
해당 디렉토리가 포함됩니다.
~/.bashrc 대신 ~/.profile을 사용한 이유는 무엇입니까?
이 개념은 다음과 같은 경우에 유용할 수 있습니다.
~/.profile
로그인할 때 시작하려는 프로그램(그래픽 프로그램이 아닌 경우 다른 파일에 저장됨) 및
환경 변수 정의와 같이 전체 세션에 적용되는 항목을 저장하는 장소입니다.
~/.bashrc
별칭 및 함수 정의, 셸 옵션, 프롬프트 설정 등 bash 자체에만 적용되는 항목을 넣는 곳입니다. (여기에 키 바인딩을 넣을 수도 있지만 bash의 경우 일반적으로 ~/.inputrc에 들어갑니다.)
여기서는 이 주제에 대한 추가 정보를 얻을 수 없습니다.
/sbin
당신은 당신의 에 있어야합니까 PATH
?
여기서는 매우 생산적인 토론이 아닐 수 있기 때문에 기본적으로 /sbin
포함되어야 하는지 여부 에 대해서는 여기서 논의하지 않겠습니다 . PATH
내가 갖고 있으니 원하시면 가져가셔도 됩니다. 당신의 전화.