2009-04-26 3 views
36

MacPorts로 내 Bash를 3.2.48으로 업데이트하지 못했습니다. 내가MacPorts로 Mac에서 내 Bash를 업데이트 할 수 없습니다.

echo $BASH_VERSION 
3.2.17(1)-release 

를 얻을 수 있기 때문에

당신이 최신 배쉬가 활성화 내 로그인 쉘을 위해 그것을 얻을 등 할 수있는 방법, 나는 그것이 활성이없는 것 같다?

+0

와우를, 업데이트 된 셸을 사용하고 있지 않다는 것을 알지 못했습니다. 감사! – Schwern

답변

72

인스턴스가 MacPorts를

chsh -s /opt/local/bin/bash 

이 당신에게 메시지를 제공하는 경우 설치 최신 배쉬로 쉘을 변경하기 위해, 다음 코드를 실행

" non-standard shell "

당신이

를 추가해야합니다
/opt/local/bin/bash 

to

/etc/shells 

/etc/shells은 텍스트 파일이므로 루트로 인증하면 직접 편집 할 수 있습니다. 당신은 당신의 첫번째 chsh 명령 명령이 실패하면 프로그램,

sudo -s 
Password: 
# echo /opt/local/bin/bash >> /etc/shells 

명령에 의해 변경 위의 파일을 변경 관리하면 지금 다시 실행할 수 있습니다.

+0

포트 응용 프로그램을 실행하는 데 문제가 발생하면 bash 프로필을 업데이트해야 할 수도 있습니다. 자세한 내용은 http://superuser.com/a/366645/114131을 참조하십시오. –

+0

'/ etc/shells'에있는 항목의 순서를 바꾸어서 새로운 'bash' 위치가 다른 항목 앞에 오도록해야 할 수도 있습니다. 모든 것이 제대로 작동하려면. – DilithiumMatrix

+0

@zhermes : 사실이 아닙니다./etc/shells의 명령은 아무 효과가 없습니다. – Noldorin

2

설치되어 있지만 로그인 셸로 사용되지 않았다고 생각합니다.

명령 줄에서 dscl을 사용하여 셸을 변경할 수 있습니다. 를, dscl 프롬프트에서

다음

list Local/Default/Users 
read Local/Default/Users/<your username here> 
change Local/Default/Users/<your username here> UserShell /bin/bash /opt/local/bin/bash 

내가 한 것이 도움이 내 blog 경우에를, dscl 사용의 또 다른 예는.

+1

먼저 새 셸을/etc/shells에 추가해야합니다. # sudo echo/opt/local/bin/bash >>/etc/shells – Fa11enAngel

+2

로컬/Default/Users/simpatico를 변경합니다. UserShell/bin/bash/opt/local/bin/bash

속성 상태 : eDSAttributeNotFound DS 오류 : -14134 (eDSAttributeNotFound) – simpatico

2

당신은 기존의 맥 OS X의 로그인 쉘에서 로그인 쉘을 전환 할 수 있습니다 (기본적으로는 /bin/bash 맥 OS X와 ​​함께 제공) 바로 다음 쉘 스크립트를 사용하여 MacPorts를 /opt/local/bin/bash에 :

#!/opt/local/bin/bash 
if [ `grep /opt/local/bin/bash /etc/shells` ]; 
then 
    echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash;  
else 
    echo /opt/local/bin/bash | sudo tee -a /etc/shells; 
    chsh -s /opt/local/bin/bash; 
fi 
+2

grep의 출력을 테스트하지 말고 종료 상태를 테스트하십시오. 'if grep -Fxq/opt/local/bin/bash/etc/shells; 그때' – geirha

관련 문제