01.07.2017

FreeBSD и Bash

BASH — Bourne-Again SHell (что может переводиться, как «перерожденный шэл», или «Снова шэл Борна(создатель sh)»), самый популярный командный интерпретатор в UNIX-подобных системах, в особенности, в GNU/Linux.

Некоторые считают, что в FreeBSD Bash, как таковой отсутствует, а следовательно, запуска скриптов такого типа нет. Это заблуждение, в «голой» системе баш действительно отсутствует, но его можно установить из пакетов или портов.

Для начала, создадим в домашней директории тестовый Bash-скрипт myscript.sh с содержанием

#!/bin/bash

echo "The current directory is:"

pwd

echo "The user logged in is:"

whoami

Предоставляем ему права на выполнение, пробуем запустить и получаем ошибку

chmod 777 myscript.sh

./myscript.sh

./myscript.sh: Command not found.

Устанавливаем Bash

cd /usr/ports/shells/bash

make install clean

ln -s /usr/local/bin/bash /bin/bash

Возвращаемся в нашу домашнюю директорию и пробуем запустить скрипт еще раз. Вы должны получить результат выполнения, в моем случае, результат следующий:

./myscript.sh

The current directory is:

/home/user

The user logged in is:

user

После этого Вы можете выполнять Bash-скрипты или  установить bash, как оболочку по умолчанию, для этого нужно выполнить

chsh -s bash user

Где user – имя пользователя, если его не указывать, будет установлено для всей системы.

Если Вы планируете использовать Bash, как командную оболочку, рекомендую установить пакет bash-completion, он позволит по нажатию TAB видеть возможные окончания команд

cd /usr/ports/shells/bash-completion/

make install clean

Обратите внимание на сообщение в конце установки

To enable the bash completion library, add the following to

your .bashrc file:

[[ $PS1 && -f /usr/local/share/bash-completion/bash_completion.sh ]] && 

        source /usr/local/share/bash-completion/bash_completion.sh

See /usr/local/share/doc/bash-completion/README.md for more information.

Оно означает, что в папке пользователя нужно создать файл .bashrc с содержанием

[[ $PS1 && -f /usr/local/share/bash-completion/bash_completion.sh ]] &&   source /usr/local/share/bash-completion/bash_completion.sh

Послесловие.

В целом, без Bash можно жить долго или он может никогда Вам не понадобиться, так как для ряда задач будет достаточно и sh, но за время работы я встречался с тем, что ряд решений легче написать или найти написанными для Bash. Также встречался ряд программных продуктов, которые прекрасно работали на FreeBSD, но во время установки, настройки или работы выполняли ряд Bash-скриптов (например, Sync-сервера или плагины для Nagios)

Рекомендую почитать:

https://ru.wikipedia.org/wiki/Bash

https://habrahabr.ru/company/ruvds/blog/325522/

Комментариев нет:

Отправить комментарий