최신 버전의 bash를 사용하고 있는지 어떻게 확인하나요?

최신 버전의 bash를 사용하고 있는지 어떻게 확인하나요?

방금 내 컴퓨터에 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 --loginexec.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

관련 정보