![최신 버전의 bash를 사용하고 있는지 어떻게 확인하나요?](https://linux55.com/image/42175/%EC%B5%9C%EC%8B%A0%20%EB%B2%84%EC%A0%84%EC%9D%98%20bash%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EA%B3%A0%20%EC%9E%88%EB%8A%94%EC%A7%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%99%95%EC%9D%B8%ED%95%98%EB%82%98%EC%9A%94%3F.png)
방금 내 컴퓨터에 bash v4.1.0을 설치했습니다.
이전 버전은 에 있습니다 /bin/bash
. 이전 버전을 교체하지 않고 새 버전의 bash를 사용할 수 있는 방법이 있습니까 /bin
? 최신 버전을 기본값으로 사용하고 싶습니다.
$ which bash
/bin/bash
$ bash --version
GNU bash, version 3.00.15(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
$ ~/bash/bash-4.1/bash --version
GNU bash, version 4.1.0(1)-release (i686-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$
답변1
$PATH
먼저, 즐겨찾는 bash가 시스템 bash 앞에 있는지 확인하세요 . 또한 환경 변수를 SHELL
즐겨 사용하는 대화형 셸(아마도 사용자가 직접 설치한 bash 버전)의 전체 경로로 설정하세요.
루트의 개입 없이 자신의 쉘을 로그인 쉘로 설정할 수는 없지만 일반적으로 POSIX sh보다 더 나은 것은 필요하지 않습니다 ~/.profile
. 및 )을 exec $SHELL
넣을 수 있습니다 . 호출 이 적절한 시기를 정확하게 감지하는 것은 어렵지만 대부분의 경우 셸이 대화형인지 테스트하면 다음과 같이 할 수 있습니다.~/.profile
#!/bin/bash --login
exec
.profile
case $- in
*i*) :;;
*) exec "$SHELL";;
esac
루트가 아닌 경우 할 수 있는 작업은 제한되어 있습니다. 특히, 헤드가 있는 스크립트는 #!/bin/bash
시스템 bash를 계속 사용하고 헤드가 있는 스크립트는 #!/usr/bin/env bash
사용자의 bash를 사용합니다.
루트라면 bash 설치를 추가하여 나중에 로그인 셸을 변경하는 데 /etc/shells
사용할 수 있습니다 . 자신의 버전으로 chsh
교체할 수도 있지만 /bin/bash
이렇게 중요한 시스템 구성 요소의 경우에는 이 방법을 권장하지 않습니다. 정말로 교체하고 싶다면 /bin/bash
최소한 dpkg 기반 시스템에서 패키지 관리자를 만족시키십시오 dpkg-divert
.
답변2
usermod
옵션이 포함된 명령을 사용하여 사용자의 기본 셸을 설정할 수 있습니다 -s
(루트 권한 필요).
sudo usermod -s /home/lazer/bash/bash-4.1/bash lazer