Intereting Posts
На сервере шлюза может netNS ограничить proc, чтобы видеть только внутренние сети? Проблема с резервным копированием и общей памятью Какая прошивка работает с D-Link DIR-600? Разрешения на запись файлов, но не чтение, перезапись или изменение Предотвращение автоматического выбора текста при копировании Рефакторинг для поиска цикла для использования exec добавочный и greppable архив на CentOS для хранения большого количества файлов журнала (logrotate on steroids) linux distro, который является легким и работает в бесшовном режиме для использования в командной строке на VirtualBox Обновление ползунка яркости оболочки GNOME автоматически при изменении яркости Создайте и установите модуль ядра в определенный каталог / lib / module / * kernel Как скопировать файл с одного сервера на другой с помощью промежуточного сервера? Как скопировать файлы из каталога, удовлетворяющего определенным критериям Как получить журнал из u-boot без ком-порта Разобрать вывод с динамической шириной столбца и пустыми полями Есть ли процесс, который не отправляет EOF до завершения и как его создать?

Как убедиться, что я использую последнюю версию 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. $ 

Прежде всего, убедитесь, что ваш любимый bash находится в $PATH перед системным. Также установите переменную окружения SHELL в полный путь к вашей любимой интерактивной оболочке (предположительно, вашей собственной установленной версии bash).

Вы не можете установить свою собственную оболочку в качестве оболочки входа без вмешательства root, но обычно вам не нужно ничего лучше, чем POSIX sh в ~/.profile . Вы можете положить exec $SHELL в конец ~/.profile чтобы вы получили свою любимую интерактивную оболочку в сеансах консоли или ssh, но убедитесь, что вы не делаете ее из оболочек, которые не являются интерактивными (например, некоторые Linux дистрибутивы имеют X сеансовых скриптов, начинающихся с #!/bin/bash --login ). Трудно точно определить, когда разумно вызывать exec в .profile , но в большинстве случаев тестирование взаимодействия с оболочкой выполняется; вы можете сделать что-то вроде этого:

 case $- in *i*) :;; *) exec "$SHELL";; esac 

Если вы не root, это все, что вы можете сделать. В частности, скрипты, возглавляемые #!/bin/bash будут продолжать использовать системный bash, а скрипты, возглавляемые #!/usr/bin/env bash будут использовать ваши.

Если вы являетесь пользователем root, вы можете добавить свою установку bash в /etc/shells , после чего вы можете использовать chsh для изменения вашей оболочки входа в нее. Вы также можете заменить /bin/bash своей собственной версией, но я бы не рекомендовал это для такого критического компонента системы. Если вы действительно хотите заменить /bin/bash , по крайней мере, пусть ваш менеджер пакетов счастлив; в системе на основе dpkg вы можете использовать dpkg-divert .

Вы можете установить оболочку вашего пользователя по умолчанию с помощью команды usermod с параметром -s (требуется привилегии root):

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