.bash_profile을 변경 한 후“명령을 찾을 수 없음”과 함께 모든 명령이 실패합니까?


46

.bash_profile을 업데이트하고 있었지만 불행히도 몇 가지 업데이트를했으며 이제는 다음과 같은 정보를 얻습니다.

env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found
-bash: dirname: command not found
-bash: /preexec.sh.lib: No such file or directory
-bash: preexec_install: command not found
-bash: sed: command not found
-bash: git: command not found

내 bash_profile은 실제로 다른 .sh 파일을 가져 와서 (소스를 제공합니다) 어떤 수정으로 인해이 문제가 발생했는지 확실하지 않습니다.

이제 파일 목록을 보려고하면 다음과 같은 결과가 나타납니다.

>ls
-bash: ls: command not found
-bash: sed: command not found
-bash: git: command not found

오류의 원인을 추적하는 방법과 파일 나열 등과 같은 기본 사항에 터미널을 사용하는 방법에 대한 팁이 있습니까?


전체 경로를 다음과 같이 사용하면 어떻게됩니까? / bin / ls? 그리고 어떤 종류의 변화를하고 있습니까?
KP MacGregor 2

2
예. .bash_profile을 붙여 넣으십시오
1 월

/ bin / ls는 파일을 나열하지만 그 아래에이 두 줄이 표시됩니다.-bash: sed: command not found -bash: git: command not found
Blankman

문제가 인 경우 /etc/environment다음 명령을 사용하십시오 ( ssh -t root@<server-ip> "/bin/bash -c '/bin/mv /etc/environment /tmp/'"
센 토스

답변:


64

어느 시점에서 당신은 기본 PATH환경 변수를 덮어 쓰는 것으로 보입니다 . 오류 유형은를 PATH포함하지 않고 /bin위의 명령 (포함 bash)이 있는 위치를 나타냅니다 .

예를 들어

PATH=/home/user/bin

대신에

PATH="$PATH":/home/user/bin

나는 한 시점에서 이것을했다 :export PATH=PATH:EC2_HOME/bin
Blankman

2
두 번째 PATH 문자열에서 '$'를 사용해야합니다. – export PATH=$PATH:EC2_HOME/bin
Manula Waidyanatha

내 경로에 있어도 'ec2-describe-regions'가 작동하지 않는 방식이 이상합니다. $ EC2_HOME / bin / ec2-describe-regions 소스를 다시로드했습니다 ....
Blankman

2
봐, 우리는 당신이 무엇을하고 있는지, 당신이 소싱하고있는 다른 파일들, 그 안에 무엇이 있는지 모릅니다. 그리고 예, 파일을 소스 할 때마다 경로에 항목을 추가 합니다 (일반적으로 .bash_profile은 한 번만 읽기 때문에 좋습니다). 하나씩 살펴보고 무슨 일이 일어나는지보십시오. 또한 EC2_HOME은 변수가 아닌가? 그렇다면 다음과 $같이 시작 해야합니다 .export PATH=$PATH:$EC2_HOME/bin
January

1
나는 그 문제에
갇힌

21

bash 스크립트 디버깅을 시작하는 한 가지 방법은 -x 옵션을 사용하여 서브 쉘을 시작하는 것입니다.

$ bash --login -x

이것은 모든 명령과 해당 인수를 보여줍니다.이 인수는 해당 쉘을 시작할 때 실행됩니다.

로그인 쉘에서 .bash_profile을 읽으므로 --login 옵션이 지정됩니다. bash 스크립트 디버깅에 대한 추가 정보는 http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html 에서 찾을 수 있습니다 .

궁극적으로, 나는 1 월의 제안이 당신에게 도움이 될 것이라고 생각하지만, 그 링크는 미래의 문제를 읽을 가치가 있습니다.


이것을 얻었습니다 : -bash : bash : 명령을 찾을 수 없음
Yassine Qoraiche

10

문제를 발견했을 수 있습니다. 그것은 나를 위해 일했고 당신을 위해 일할 수도 있습니다 ...

편집기로 Windows (LF / CR) 저장을 기본값으로 설정했습니다. 두 시스템을 모두 사용했기 때문에 논리적으로 보였습니다. 내가 엉망이되어야 할 때 .bash_profile, 나는 주석을 달고 아무것도 효과가없는 것을 시도한 후에 깨달았습니다. 저장 내용을 OS X 형식 (CR 만 해당)으로 변경했습니다. 터미널에서 더 이상 "명령을 찾을 수 없습니다"!

그렇게 쉬울 수도 있습니다!


나를 미치게하는 매우 미묘한 일. 이 답변을 추가해 주셔서 감사합니다!
samuel.molinski

이것이 내가 경험 한 것입니다! 감사. 빠른 팁은이 명령을 사용하여 유닉스 환경에서 파일을 변환하는 것입니다.$ dos2unix .bash_profile
melwil

그것이 당신이 한 일이라고 확신합니까? OS X은 Unix이므로 캐리지 리턴 (CR)이 아니라 단일 줄 바꿈 (LF) 문자로 Unix 스타일 줄 끝을 사용합니다. 후자를 사용하는 유일한 대중적인 운영 체제는 OS 9이고 이전 및 Linux / Ubuntu 응용 프로그램은 그에 의해 상당히 혼란 스러웠습니다.
David Foerster

6

다시 실행할 수 없었습니다. ~ / .bash_profile 또는 whoami, grep 등과 같은 일반적인 명령. 필요한 경로를 다시 내보내는 방법을 찾았습니다.

export PATH=/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/cpanel/composer/bin:/usr/local/easy/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin

이 경로 중 일부가 모든 Linux 패키지에있는 것은 아니지만 대부분의 시스템에서 작동합니다. 그것은 나를 위해 일했다.


4

나는 당신이 아니라면 비슷한 문제가있는 다른 사람들을 위해 문제에 대한 답을 찾은 것 같습니다. 이것에 대한 나의 대답은 내가 없다는 것입니다 .bash_profile.

그래서 웹 전체를 검색하고 해결책을 찾았습니다. 기본적으로 터미널을 열고 입력 한 다음 키 touch ~/.bash_profile를 누릅니다 Enter. 그것은 내 문제를 해결했다. 그것이 당신을 위해 같은 일을 바랍니다


8
LOL ... -bash : touch : 명령을 찾을 수 없음
Kumar KL

2

나는 당신과 같은 문제가 있습니다. 많은 인기있는 명령 ( ls,, vi/vim..)을 사용할 수 없으며 루트로 /root/.bashrc로그인 할 때 편집 할 수 없습니다 su.

드디어. 이 문제에 대한 해결책을 찾았습니다. 다음 명령을 사용하여 루트에 로그인하십시오.

su -m

그 후, 당신은 사용할 수 있습니다

vim /root/.bashrc

PATH를 편집하십시오.

행운을 빕니다!


2

나는 같은 문제가 있었다. PATH를 내보내는 동안 $를 놓쳤을 수 있습니다. TextEdit에서 .bash_profile을 열어야합니다. 디렉토리에서 파일을 찾을 수 없으면 Command + Shift +>를 눌러 숨겨진 파일을 표시하십시오.

그런 다음 PATH를 정정 한 후 저장하십시오.

터미널의 디렉토리에 source .bash_profile을 입력하십시오.

문제가 해결 될 것입니다.


고마워 내 문제를 해결하고 마침내 bash_profile 파일을 편집 할 수있었습니다.
Touseef Murtaza

1

나는 정확히 같은 문제가 있었다.

lxterminal에 넣으면 :

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash/

tty2에 정확히 동일한 명령을 입력하면 다음을 얻습니다.

set | grep "jerom/bash"
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jerom/bash\r

\ r은 DOS 줄 끝을 의미하므로 파일을 열고 ~/.bashrcKrusader에서 줄 끝을 유닉스 스타일로 변경했습니다. 그리고 이미 작동하고 있습니다 !!! :-)

DOS EOL은 bash 스크립트에서도 잘못된 문제를 일으 킵니다.


1

변경 후 바로 같은 문제가 발생했습니다 .bash_profile. 그리고 나는 그것을 다시 바꾸고 싶지만 모든 명령, 특히 nano 명령과 vim 명령을 잃어 버렸으므로 명령으로 .bash_profile을 열 수 없기 때문에 변경할 수 없습니다. 그리고는 .bash_profile내가 파인더로를 열 수 없습니다 숨겨진 파일입니다.

.bash_profile 파일을 여는 방법을 찾아야합니다. 많은 방법을 시도한 후에 Atom 을 사용할 수 있음을 알았 습니다 .Atom은 프로젝트 폴더의 모든 파일을 읽을 수 있고 숨겨진 파일을 포함하기 때문입니다. 따라서 Atom을 열고을 File -> Open선택하고 <yourusername>폴더를 선택한 다음 모든 숨겨진 파일이 Atom의 트리보기에 표시됩니다 .bash_profile. 마지막 수정을 제거한 후 터미널을 다시 열면 모든 명령이 다시 나타납니다! :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.