CentOS 6.6 VM에 cpanm을 설치하고 실행할 수 있도록 $PATH를 변경하려고 합니다.
그러나 입력하는 대신
echo 'export PATH="$HOME/perl5/bin:$PATH"' >> ~/.bash_profile
나는 들어갔다
echo 'export PATH="$HOME/perl5/bin:%PATH"' >> ~/.bash_profile
cpanm을 실행할 수 있지만 다른 것은 실행할 수 없기 때문에 $PATH를 덮어쓴 것 같습니다. 고양이도 없고, vim도 없고, 내장되지 않은 명령도 없습니다.
재부팅하면 $PATH가 재설정된다는 내용을 읽었으므로 시도해 보았습니다. GNOME 로그인 페이지에 로그인하려고 하면 OS가 즉시 재부팅되고 로그인 페이지로 돌아갑니다. 그래서 설정을 변경하기 위해 터미널에 접근할 수도 없습니다.
무슨 일이 일어났으며 이 상황을 해결하는 방법은 무엇입니까?
답변1
아시다시피, 이 $PATH
변수는 사용자가 입력한 (내장되지 않은) 명령을 검색해야 하는 디렉터리를 쉘에 알려줍니다. 이렇게 하면 매번 입력할 필요가 없으며 (→ 편의성), 특정 Linux/UNIX 배포판이 해당 스크립트를 거기에 배치하는지 , 아니면 다른 곳에 배치하는지 알지 못한 채 /usr/bin/vim
타사 스크립트를 직접 실행할 수 있습니다 (→ 상호 운용성).bash
/bin/bash
/usr/bin/bash
쉘에 없는 것을 실행하려면 $PATH
쉘에 프로그램의 전체 경로를 제공하십시오(예: ) /usr/bin/vim
.
GNOME이 시작을 거부하는 경우: 텍스트 기반 콘솔(예: ++ Ctrl) 로 전환 하고 일반 사용자 이름과 비밀번호로 로그인한 후 거기에서 로그인하세요.AltF2/usr/bin/vim ~/.bash_profile
아, 거기서 돌아가는 방법을 언급해야 할 것 같습니다...
그래픽 로그인 관리자는 일반적으로 에서 실행되며 ++ 를 사용하여 전환 tty7
할 수 있습니다 .CtrlAltF7
답변2
n.st가 $PATH 변수를 수정하는 방법을 이미 설명했듯이 (grub과 함께 사용하기 위해) 쉘 액세스를 복원하는 방법을 알려드리겠습니다.
컴퓨터를 다시 시작하십시오. grub 프롬프트에서 Linux 배포판을 선택하고 "e"(입력한 위치에 "편집"을 의미함)를 누릅니다. 그러면 기본 편집기로 이동합니다.
"linux /boot/..."로 시작하는 줄로 이동하여 "init=/bin/bash"(따옴표 없이)를 추가합니다. 그런 다음 F10을 누르십시오(또는 시작 키라고 하는데 어느 키인지 기억이 나지 않습니다).
루트를 활성화하면 배포판이 1초 이내에 bash로 직접 부팅됩니다. 그런 다음 $PATH 변수를 bash_profile 파일로 다시 내보낼 수 있습니다(모르는 경우 인터넷에서 예제를 찾아보세요).
완료되면 정상적으로 재부팅할 수 있습니다("init"를 제거할 필요가 없습니다. 이 작업은 이미 자동으로 수행되어야 합니다).