Основи Linux від засновника Gentoo

bash

Навігація з основ Linux від засновника Gentoo:

Налаштування користувача оточення

Знайомство із «fortune»

Ваше оточення має багато корисних опцій, які ви можете змінити на свій розсуд. Однак досі ми не обговорювали як відновлювати ці налаштування кожного разу, коли ви входите в систему, за винятком того, щоб щоразу набирати їх знову. У цьому розділі ми розглянемо налаштування вашого оточення за допомогою редагування стартових конфігураційних файлів.

Для початку, давайте покажемо доброзичливе повідомлення, коли ви входите в систему. Щоб побачити приклад такого повідомлення, запустітьfortune:

$fortuneЯкщо не здійснити кар'єрне планування буде перевищувати гачок. (додаток fortune може бути не встановлений, запустіть інсталяцію в пакетному менеджері вашого дистрибутива, наприклад apt-get install fortune — прим. пров.)

.bash_profile

fortune Спробуйте вийти із системи та зайдіть назад. До запуску менеджера дисплея, наприклад xdm, gdm або kdm, ви побачите веселе вітання, коли увійдете:


$

Оболонка входу.

При запуску bash проходить файл .bash_profile у вашій домашній директорії, запускаючи кожен рядок начебто набираючи її в командному рядку. Це називається інтерпретацією файлу (file sourcing).

Bash може працювати по-різному в залежності від того, як він запущений. Якщо він запущений як оболонка входу, то буде працювати, як описано вище - спочатку обробляючизагальносистемний /etc/profile, а потім ваш особистий

Існують два способи запуску bash як оболонка входу. Перший використовується, коли ви вперше входите в систему: bash запускається з ім'ям процесу -bash. Можна побачити це у виведенні списку процесів:

Розуміння --login

Другий спосіб запустити bash як оболонку входу – за допомогою опції – login. Іноді ця можливість використовується емуляторами терміналу (на зразок xterm) щоб їхня сесія bash виглядала як при початковому вході до системи.

/.bash_profile натомість обробить

Перевірка на інтерактивність

/.bashrc, не будучи запущеним інтерактивно, наприклад при використанні команд типу rsh або scp. Це важливо пам'ятати, тому що виведення тексту, як у прикладі з командою fortune вище, може зіпсувати ці неінтерактивні сесії bash. Хорошою ідеєю є використання змінної PS1 для перевірки факту інтерактивності поточної сесії перед виведенням тексту:

/etc/profile та /etc/skel

Як системний адміністратор ви відповідаєте за файл /etc/profile. Так як ним керуються всі, хто вперше входять в систему, важливо тримати його в робочому стані. Це також дуже потужний інструмент, що використовується для того, щоб змусити речі працювати правильно для нових користувачів відразу після того, як вони увійдуть, використовуючи свій новий обліковий запис.

Однак, існує варіант, при якому налаштування з одного боку можуть бути виставлені в значення за промовчанням для нових користувачів, а з іншого, можуть бути легко ними змінені при необхідності. Саме для цього існує директорія /etc/skel. При використанні команди useradd для створення нового облікового запису всі файли з /etc/skel копіюються в домашній каталог нового користувача. Це означає, що ви можетепокласти, наприклад, .bash_profile і .bashrc /etc/skel для більш комфортного початку роботи нового користувача.

Змінні в bash можуть бути позначені таким чином, що вони будуть встановлюватися у всіх командних оболонках, що знову запускаються. Це означає, що вони позначені як зовнішні (export). Ви можете змусити bash відобразити список усіх таким чином позначених зовнішніх змінних у вашій сесії bash:

$export​​
declare -x EDITOR="vim"
declare -x HOME="/home/chouser"
declare -x MAIL="/var/spool/mail/chouser "
declare -x PAGER="/usr/bin/less"
declare -x PATH="/bin:/usr/bin:/usr/local/bin:/home/chouser/bin"
declare -x PWD="/home/chouser"
declare -x TERM="xterm"
declare -x USER="chouser"

Експортування змінних

Якщо змінна не зазначена на експорт, її значення не буде задано для нових оболонок, що запускаються. Але ви можете відзначити змінну експорту, передавши її вбудованій команді export:

$FOO=foo
$BAR=bar
$export BAR
$echo $FOO $BAR
foo bar
$bash
$echo $FOO $BAR
bar

У цьому прикладі були задані обидві змінні FOO і BAR, але тільки BAR була позначена для експорту. Коли було запущено новий bash він втратив значення змінної FOO. Якщо ви вийдете з цього нового bash, ви побачите, що початкові значення обох змінних FOO та BAR не змінилися.

Export та set -x

/.bash_profile або /etc/profile і позначені для експорту для того, щоб надалі не було необхідності вказувати їх знову. Але є кілька опцій, які не можуть бути експортовані, і тому вони повинні бути задані в

/.bashrc і у вашому профілі послідовно. Ці опції настроюються за допомогою вбудованої команди set:

$set -x

Опція -x змушує bash вивести на екран кожну команду, яку він збирається виконати:

$echo $FOO
$echo foo
foo

Це може бути дуже корисно для розуміння непередбаченої поведінки команд при використанні лапок або схожих дивностей. Щоб вимкнути опцію-x, використовуйтеset +x. Зверніться до сторінки документації man за всіма опціями вбудованої команди set.

Встановлення змінних із «set»

Команда set може також використовуватися для завдання значень змінних, але при цьому вказівка ​​цієї команди не є обов'язковою. Команда bash "set FOO = foo" робить те ж саме, що і "FOO = foo". Скидання значення змінної здійснюється вбудованою unset:

Unset vs. FOO=

Це не те саме, що встановлення змінної порожнім значенням, хоча часом це важко пояснити. Один із способів помітити цю різницю — викликати команду set без параметрів, щоб вивести список усіх поточних змінних:

$FOO=bar
$set grep ^FOO
FOO=bar
$FOO=
$set grep ^FOO
FOO=
$unset FOO
$set grep ^FOO

Використання set без параметрів схоже на використання вбудована команда export за винятком того, що set відображає всі змінні, а не тільки позначені як зовнішні.

Експортування змінних для зміни поведінки програм.

$PAGER=less
$export PAGER
$man man

Коли змінна PAGER встановлена ​​в less, ви будете бачити спочатку одну сторінку, а натискання пробілу буде переміщати вас на наступну сторінку. Якщо ви зміните змінну PAGER в cat, весь текст відобразиться відразу, без зупинок на сторінках.

Використання «env»

На жаль, якщо визабудете встановити PAGER назад у less, програма man (як і деякі інші програми) продовжуватиме виведення весь запитаний текст без зупинок. Якщо ви хотіли задати PAGER значення cat тільки один раз, то могли б скористатися командою env:

$PAGER=less
$env PAGER=cat man man
$echo $PAGER
less

В На цьому прикладі змінна PAGER була використана зі значенням cat в програмі man, але сама по собі змінна оточення PAGER залишилася незмінною в сесії bash.

Підсумки та посилання

Ну ось саме час привітати вас із завершенням 3 частини керівництва. Ви вже повинні знати як знаходити інформацію в системі та інтернет документації, а також мати гарне уявлення про модель прав доступу в Linux, управління обліковими записами користувачів та оточенням.

Не забудьте переглянути ресурси з Linux документацією, використані в цьому посібнику, особливо Linux Documentation Project, де зможете знайти різні гайди, FAQ, а також безцінні сторінки мана. Не забудьте також про Linux Weekly News.

The Linux System Administrators guide є гарним доповненням до цього посібника. Також ви можете знайти в інтернеті дуже корисну статтю Еріка Реймонда "Unix and Internet Fundamentals HOWTO".

Переклад виконав колективний розум за допомогою notabenoid.com. Дякуємо наступним benoid-юзерам (в алфавітному порядку):kindacute,nekjine,Rich. Окрема подяка Олексію Блажку ([email protected]), а також ініціатору усієї серії перекладів, VBart.

Daniel Robbins

Деніель Роббінс - засновник спільноти Gentoo та творець операційної системи Gentoo Linux. Деніель проживає в Нью-Мехіко зі своєю дружиною Мері та двома енергійними дочками. Він також засновник таглава Funtoo, написав безліч технічних статей для IBM developerWorks, Intel Developer Services та C/C++ Users Journal.

Chris Houser

Aron Griffis

Хардкорна конфа за С++. Ми запрошуємо лише профі.