저는 Unix를 처음 사용하는데, 논문을 위한 프로그램을 설치하는 과정에서 기본 Unix 명령에 대해 PATH를 사용해야 합니다. 예를 들어 파일을 나열하려는 디렉터리 이름을 ls
입력할 때마다 . ls
읽는다:
-bash: ls: No such file or directory
이 문제를 해결하려면 어떻게 해야 합니까? 어떤 도움이라도 대단히 감사하겠습니다!
답변1
즉시 경로를 재설정하세요(즉, 로그아웃하기 전):
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
전체 경로는 복원되지 않지만 기본 유틸리티는 다시 사용할 수 있습니다.
다음은 이러한 일이 발생하는 예입니다.
PATH 변수(읽을 때 $PATH라고 함)가 있습니다.
그것은 다음과 같습니다:
$ echo $PATH
/home/durrantm/.rvm/gems/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/durrantm/.rvm/rubies/ruby-2.0.0-p247/bin:/home/durrantm/.rvm/bin:/h
ome/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:/home/durrantm/.autojump/bin:/usr/local/heroku/bin:
/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/durrantm/.rvm/bin:/home/durrantm/.rvm/bin:/home/durrantm
/.rvm/bin
추가하려고 했으나 실수로
PATH=PATH:other_dir
바꾸다
PATH=$PATH:other_dir
결과적으로 당신의 길은
PATH:other_dir
그러면 ls 및 sed와 같은 모든 유틸리티가 작동하지 않습니다.
다음을 수행하여 최소 세트를 수정할 수 있습니다.
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
이는 로그인 지점 파일이 PATH를 망칠 경우 특히 유용합니다.
PATH 변경 사항이 있는지 .bashrc 및/또는 .bash_profile 파일을 확인하세요.
Greg가 말했듯이 로그아웃할 수도 있습니다(또는 더 안전한 옵션은 컴퓨터에 대한 로그인이 이제 중단된 경우 새 창을 여는 것입니다. 이 문제는 비대화형 로그인도 중단되었음을 의미합니다!) 그리고 echo $PATH 새 창에서.
value 를 사용하지 않을 때도 마찬가지입니다 PATH=
. 이는 현재 경로를 "지우고" 이러한 문제를 일으킵니다.
에 관해서는왜, cd는 작동하지만 ls는 다음과 같은 문제가 있을 때 작동하지 않습니다.
cd
프로그램을 찾기 위해 PATH가 필요하지 않은 "내장" 명령입니다.ls
위치를 찾기 위해 PATH를 사용해야 하는 프로그램입니다.
다음을 통해 볼 수 있습니다:
$ builtin ls
-bash: builtin: ls: not a shell builtin
14:47:29 mdurrant C02MH2DQFD58 /Users/mdurrant
$ builtin cd
14:47:31 mdurrant C02MH2DQFD58 /Users/mdurrant
$
오류가 없다는 것은 해당 명령이 내장된 명령임을 의미합니다.
"계속"(또는 종료)하기 전에...
모든 변경 사항을 테스트하십시오(특별한PATH 설정 명령인 .bashrc, .profile 등)을 실행하는 분들은 새 창을 열거나 소스 ~/.bash_profile을 실행하여 실행합니다. 변경 사항이 작동하지 않고 파일을 편집하기 위해 새 창을 열 수 없는 경우를 대비하여 창과 편집기(.bash_profile 파일을 변경할 때)를 열어 두는 것도 좋은 습관입니다. TextEdit이나 기타 간단한 편집기를 사용하여 파일을 변경할 수는 있지만(예: 명령줄 및 vi는 사용하지 않음) 쉘이 손상되거나 로그인조차 불가능할 경우 재부팅하지 않도록 주의하십시오. 이것은 정말 안 좋은 일입니다(다른 계정이 없으면 su
푹 빠질 것입니다). 나에게 발생했던 일!
내 "추가 계정" 수정은 당시 생명의 은인이었으며 모든 사람에게 적극 권장되었습니다(지금 수행하십시오!)
답변2
변경 사항은 PATH
일시적일 수 있습니다. 현재 있는 셸을 닫았다 exit
가 다시 엽니다.
새로 열린 셸에 대한 파일 설정을 편집한 경우 PATH
명령에 대한 전체 경로를 지정하여 변경한 내용을 수정합니다(예: /usr/bin/vim
).
답변3
해당 답변은 편집 후 로그아웃을 하신 분들을 위한 답변으로 .bash_profile
, 로그인 화면을 이용하실 수 없는 상황이 발생할 수 있습니다.
이것이 당신에게 효과가 있을 것이라고 약속할 수는 없습니다.
짧은 답변
어떤 이유로 셸에 액세스할 수 없는 경우 Ctrl++를 사용하여 Alt가상 콘솔로 전환 F2하고 로그인하세요. 쉘 프롬프트를 입력한 후 다음을 사용하여 해당 파일을 편집하십시오.command -p <insert_command_here>
<insert_command_here>
비슷한 것 같아요 nano .bash_profile
.
긴 대답
저는 Manjaro를 사용하고 있지만 이 경우에는 어떤 의미가 있는지 의심됩니다.
로그인 화면에 있었어요. 자격 증명을 입력했는데 아무 일도 일어나지 않았습니다. 더 이상 작동하는 것이 없기 때문에 작업할 수 있는 팁이 없습니다. 커서를 잘 움직일 수 있지만 로그인 화면 버튼이 작동하지 않습니다.
Ctrl+ Alt+ 를 눌렀습니다 F2. 이제 작동하는 콘솔 터미널이 생겼습니다. Ctrl++를 사용하여 Alt이전 화면으로 돌아갈 수 있지만 F1반드시 그럴 필요는 없습니다.
로그인 프롬프트가 표시되어 자격 증명을 입력했습니다.
익숙한 명령을 사용해 보았지만 아무것도 작동하지 않았습니다. 기본값을 얻습니다.
-bash: something_something: command not found.
그러나 을 사용할 수는 있지만 cd
디렉토리 내용을 나열할 수는 없다는 것을 알았습니다 ls
. 나는 약간의 조사를 했고 이것이 cd
내장된 명령이라는 것을 알아냈습니다. 내장 명령을 사용할 수 있는지 확인하고 이를 모두 표시하는 방법을 찾고 싶었습니다.
compgen -b
이제 사용할 수 있는 많은 명령을 발견했습니다. 나는 그들 대부분이 무엇을 하는지 모른다. source
, cd
, echo
와 같은 명령을 인식할 수 있습니다 exit
. 이러한 내장 명령을 사용하는 방법을 설명하는 좋은 자료를 찾을 수 없습니다. 어쩌면 내가 충분히 검색하지 않았을 수도 있습니다. 아무튼 help
내장 명령어이기도 해서 몇몇 내장 명령어에 사용해 봤습니다. 마침내 나는 다음을 수행했다:
help command
옵션 중 하나는 다음과 같습니다.
command -p
기본값 사용
PATH
모든 기본 유틸리티를 찾을 수 있습니다.
이것은 매우 유용할 것 같아서 다음과 같이 시도해 보았습니다.
command -p ls
효과가 있었습니다. 이제 파일을 편집해야 한다고 생각하여 .bash_profile
다음과 같이 했습니다.
cd ~
command -p nano .bash_profile
그런 다음 경로를 엉망으로 만드는 몇 줄을 추가했습니다. 어떤 줄인지 모른다면 일종의 기본 경로를 사용하는 것이 안전할 것 같습니다. 나는 이것이 일이라고 상상할 수 있습니다. 이것이 문제를 일으키지 않는다면 .bash_profile
, 문제를 일으키는 파일을 편집해 볼 수 있을 것 같습니다.
그런 다음 시스템을 다시 시작했고 모든 것이 정상으로 돌아왔습니다.
답변4
Android Studio를 설치하고 잘못된 SDK 경로를 썼을 때 이런 일이 발생했습니다. 여러 내보내기 오류가 발생했습니다. 유효한 식별자가 아닙니다. 모든 명령이 작동하지 않습니다. 메모장(터미널 외부)에서 bash_profile을 열고 잘못된 경로를 삭제해야 했습니다.