2012-03-14 4 views
0

필자는 어떻게 든 내 bash_profile에서 $ PATH 변수를 사용하면서 bash를 망쳐 버렸다. 제가 기억할 수있는 한, $ PATH 변수에 디렉토리를 추가하는 것뿐입니다. 도와주세요! 여기 bash - cd 명령이 작동하지 않습니까?

... 나는 여러 디렉토리에 내가 CD를

my-MacBook-Pro:~ myuser$ cd .rvm 
-bash: dirname: command not found 
-bash: find: command not found 
my-MacBook-Pro:.rvm myuser$ cd 
-bash: find: command not found 

그리고 여기가 내가 내가했던 것을 무엇이든 취소 할 내 .bash_profile에 들어갈 때 발생하는 때 무엇을 얻을

my-MacBook-Pro:~ myuser$ emacs .bash_profile 
-bash: emacs: command not found 

my-MacBook-Pro:~ myuser$ sudo emacs .bash_profile 
-bash: sudo: command not found 

도움이 될 것입니다. 정상적으로 다시 작동하는 bash를 얻을 때까지 완전히 망가졌습니다!

답변

1

/usr/bin/emacs .bash_profile 등이 PATH이 고장 났을 때 작동합니다.

1

$PATH 변수는 쉘이 명령을 찾을 위치를 알려줍니다. 전체 경로를 말해서 우회하면 작동 할 것입니다. 시도해보십시오 /usr/bin/emacs .bash_profile.

0

dirnamefind을 사용하는 방식으로 $ PROMPT_COMMAND (아마 .bashrc)를 정의한 것 같습니다. 그러면 동작은 cd입니다.

find 명령의 기본값은 /usr/bin/find입니다. 따라서이를 사용하여 imprtant 명령의 위치를 ​​찾고 경로 정보를 재구성 할 수 있습니다.

1

cd을 수행하면 다른 여러 가지를 얻게됩니다. 당신은 PROMPT_COMMAND이 정의가

  • : 당신은 BASH를 사용하고 있기 때문에 두 가지 문제가되어 있습니다. 그것을 정의 해제하려고 :

    $ 해제 PROMPT_COMMAND

  • cd 명령의 별칭이있다 : 이것은 당신이 당신의 프롬프트 문자열로 넣을 수있는 좋은 백 슬래쉬 문자가없는 경우 콘 셸에 매우 일반적이었다 . 프롬프트에 디렉토리 이름이 필요하면.

    function _cd 
    { 
        logname="$(logname)" 
        hostname="$(hostname)" 
        directory="$1" 
        pattern="$2" 
    
        if [ "$pattern" ]  #This is a substitution! 
        then 
         \cd "$directory" "$pattern" 
        elif [ "$directory" ] 
        then 
         \cd "$directory" 
        else 
         \cd 
        fi 
        directory=$PWD 
        shortName=${directory#$HOME} 
    
        if [ "$shortName" = "" ] 
        then 
         prompt="~$logname" 
        elif [ "$shortName" = "$directory" ] 
        then 
         prompt="$directory" 
        else 
         prompt="~$shortName" 
        fi 
        title="[email protected]$hostname:$prompt" 
        PS1="$title 
    $ " 
    } 
    
    alias cd="_cd" 
    

    미운가되지 않습니다 :

당신이 뭔가를해야했다? 당신은 BASH를 위해 모든 것을 통과 할 필요는 없지만 이것은 BASH에서도 작동합니다. 그리고 이것이 관성을 무시한 채로 이루어진 곳을 보았습니다.

이 시도 :

$ type cd 

당신은

$type cd 
cd is a shell builtin 

를 얻을 수 있습니다 중 하나 또는 $PATH 당신의 업데이트에 관해서는

$ type cd 
cd is an alias for .... 

을 얻을 것이다, 당신은 아마 넣어 것을 잊었다 $PATH 새로운 정의 또는 따옴표로 돌아 가기 누군가 디렉토리가 있기 때문에 na 그 안에 공간이있는 나. 귀하의 PATH 설정은 다음과 같아야합니다

PATH="/my/directory:$PATH" 

어떤 사람들은 그것이 있어야 말 :

PATH="$PATH:/my/directory" 
관련 문제