私は私のコンピュータに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
(root権限が必要)。
sudo usermod -s /home/lazer/bash/bash-4.1/bash lazer