最新バージョンの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/bashbash を使用し、ヘッド付きのスクリプトは#!/usr/bin/env bashユーザーの bash を使用します。

ルートの場合は、bashインストールを追加して後でログインシェルを変更するために/etc/shells使用できます。独自のバージョンにchsh置き換えることもできますが、/bin/bashこのような重要なシステムコンポーネントの場合はこの方法をお勧めしません。本当に交換したい場合は、/bin/bash少なくともdpkgベースのシステムでパッケージマネージャを満たしてくださいdpkg-divert

答え2

usermodオプションを含むコマンドを使用して、ユーザーのデフォルトシェルを設定できます-s(root権限が必要)。

sudo usermod -s /home/lazer/bash/bash-4.1/bash lazer

関連情報