Linux Fundamentals Part 3 / Основы Linux от основателя Gentoo. Часть 3: Tuning the user environment

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Настройка окружения пользователя

VBart 13.11.10 в 23:52

0

Знакомство с "fortune"

kindacute 14.11.10 в 22:38

0

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

nekjine 14.11.10 в 15:51

0

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

nekjine 14.11.10 в 15:55

0

$ fortune
Бесконечное, тщательное планирование не заменит вам глупой удачи.

kindacute 14.11.10 в 22:51

0

.bash_profile

nekjine 14.11.10 в 15:56

0

Теперь давайте сделаем так чтобы fortune запускалось при каждой авторизации. Используя любимый текстовый редактор отредактируйте файл .bash_profile в вашей домашней дериктории. Если такого файла не существует, создайте его. Вставьте в его начало:

foff4ik 14.11.10 в 16:40

0

fortune

nekjine 14.11.10 в 15:56

0

Выйдите из системы и зайдите обратно. До тех пор, пока вы не запустите менеджер дисплея, такой как например xdm, gdm или kdm, вас весело встретят, когда вы войдете:

nekjine 14.11.10 в 15:59

0

mycroft.flatmonk.org login: chouser
Password:
Freedom from incrustations of grime is contiguous to rectitude.
<В здоровом теле здоровый дух.>(прим. Переводчика)
$

foff4ik 14.11.10 в 19:35

0

Командная строка авторизации пользователя.

(анонимно) 25.11.10 в 08:40

0

Когда запускается bash, он проходит через файл .bash_profile в вашей домашней директории, выполняя каждую строчку будто бы она была введена в консоле.
Это называется sourcing the file.

(анонимно) 14.11.10 в 17:46

0

При запуске bash проходит файл .bash_profile в вашей домашней директории, запуская каждую строчку как будто набирая ее в командной строке. Это называется обработкой файла.

foff4ik 14.11.10 в 18:37

0
+1

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

foff4ik 14.11.10 в 18:37

0

Имеется два пути запустить bash с авторизацией. Первый путь используется когда вы входите в систему bash запускается с именем процесса -bash. Вы можете увидеть это в приведенном ниже листинге:

foff4ik 14.11.10 в 18:37

0

Есть два способа запуска bash с авторизацией. Первый используется, когда вы входите в систему, bash запускается с именем процесса -bash. Это видно в списке процессов:

tehhi 15.11.10 в 10:05

0

$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
chouser 404 0.0 0.0 2508 156 tty2 S 2001 0:00 -bash

(анонимно) 14.11.10 в 17:32

0

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

foff4ik 14.11.10 в 18:36

0

Вы, вероятно, увидите более длинный список, но но в нем будет как минимум одна строка с чертой перед именем вашей оболочки, как -bash в примере выше. Эта черта используется оболочкой , чтобы определить, была ли она запущена при авторизации.

tehhi 15.11.10 в 10:10

0

Понимание --login

(анонимно) 14.11.10 в 17:48

0

Второй путь сказать bash запуститься с авторизацией - опция командной строки --login. Это иногда используется эмуляторами терминала (напрмер xterm) чтобы добиться от bash поведения как при сессии с авторизацией.

foff4ik 14.11.10 в 18:36

0

Второй способ запуска bash авторизацией -- опция командной строки --login. Этот способ иногда используется эмуляторами терминала (напрмер,xterm), чтобы добиться от bash поведения как при сессии с авторизацией.

tehhi 16.11.10 в 10:55

0

После авторизации можно запустить много копий вашей оболочки.У тех из них которые запущены без опции --login или не имеют черточки перед именем процесса, поведение будет иным нежели при запуске с авторизацией.
Они предоставляют вам командную строку, однако, называются они интерактивными оболочками. Если bash запущена интерактивно, без авторизации, она проигнорирует /etc/profile и ~/.bash_profile вместо этого обработает ~/.bashrc

foff4ik 14.11.10 в 18:35

0

interactive login profile rc
yes yes source ignore
yes no ignore source
no yes source ignore
no no ignore ignore

allig4t0r 25.11.10 в 16:24

0

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

foff4ik 14.11.10 в 18:33

0

Иногда bash обрабатывает ваш ~/.bashrc не являясь реально интерактивной, например при использовании команд типа rsh или scp. Это важно помнить потому как вывод текста, как в примере с командой fortune выше, может испортить эти неинтерактивные сессии bash. Хорошей идеей является использование переменной PS1 для проверки факта интерактивности текущей сессии перед выводом текста:

foff4ik 14.11.10 в 18:33

0

if [ -n "$PS1" ]; then
fortune
fi

(анонимно) 14.11.10 в 17:32

0

/etc/profile and /etc/skel

(анонимно) 14.11.10 в 17:33

0

/etc/profile и /etc/skel

foff4ik 14.11.10 в 19:36

0

Как системный администратор, вы отвечаете за файл /etc/profile. Так как им руководствуются все кто впервые входят в систему, важно держать его в рабочем состоянии. Это также очень мощный инструмент, используемый для того чтобы заставить вещи работать правильно для новых пользователей сразу после того как они войдут используя свою новую учетную запись.

kindacute 14.11.10 в 22:55

0

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

tehhi 15.11.10 в 09:54

0

export

(анонимно) 14.11.10 в 17:33

0

Переменные в bash могут быть помечены таким образом, что они будут установлены во всех запущенных заново командных оболочках. Это означает, что они обозначены как внешние (export). Вы можете заставить bash отобразить список всех таким образом обозначенных внешних переменных в вашей сессии bash:

(анонимно) 25.11.10 в 08:09

0

$ 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"

(анонимно) 14.11.10 в 17:33

0

Пометка переменных для экспорта

(анонимно) 14.11.10 в 08:24

0

Обозначение переменных как внешние

(анонимно) 25.11.10 в 08:12

0

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

(анонимно) 25.11.10 в 08:16

0

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

(анонимно) 14.11.10 в 17:33

0

В этом примере были заданы обе переменные FOO и BAR, но только BAR была помечена для экспорта. Когда был запущен новый bash он потерял значение переменной FOO. Если вы выйдите из этого нового bash, вы увидите что первоначальные значения обоих переменных FOO и BAR не изменились.

kindacute 14.11.10 в 22:43

0

$ exit
$ echo $FOO $BAR
foo bar

(анонимно) 14.11.10 в 17:33

0

Export and set -x

(анонимно) 14.11.10 в 17:33

0

Export и set -x

(анонимно) 14.11.10 в 17:34

0

В связи с таким поведением, переменные могут быть указаны в ~/.bash_profile или /etc/profile и помечены для экспорта, и в дальнейшем больше не будет необходимости когда-либо их указывать. Существует несколько опций которые не могут быть экспортированы, и поэтому они должны быть заданы в ~/.bashrc и в вашем профиле последовательно. Эти опции настраиваются при помощи встроенной команды set:

kindacute 14.11.10 в 22:47

0

$ set -x

(анонимно) 14.11.10 в 17:33

0

Опция -x заставляет bash вывести на экран каждую команду которую он собирается выполнить:

kindacute 14.11.10 в 22:48

0

$ echo $FOO
$ echo foo
foo

(анонимно) 14.11.10 в 17:34

0

Это может быть очень полезно для понимания непредвиденного поведения команд при использовании кавычек или похожих странностей. Чтобы выключить опцию -x, используйте set +x. Обратитесь к странице документации man за всеми опциями встроенной команды set.
Установка переменных с "set"

(анонимно) 25.11.10 в 08:23

0

Встроенную команду set можно также использовать для установки значений переменных, но это необязательно. Команда bash
set FOO=foo
обозначает то же самое что и
FOO=foo
Сделать переменную неустановленной позволяет встроенная команда unset:

(анонимно) 25.11.10 в 08:27

0

$ FOO=bar
$ echo $FOO
bar
$ unset FOO
$ echo $FOO

(анонимно) 14.11.10 в 17:34

0

unset FOO или FOO= ?

(анонимно) 25.11.10 в 06:09

0

Это не то же самое, что установка переменной пустым значением, хотя порой это сложно объяснить. Проще говоря, используйте встроенную команду set без параметров чтобы увидеть список всех текущих установленных переменных:

(анонимно) 25.11.10 в 08:35

0

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

(анонимно) 14.11.10 в 17:35

0

Использование set без параметров похоже на использование встроенной команды export за исключением того, что set отображает все переменные а не только обозначенные как внешние.
Экспортирование переменных для изменения поведения программ.

(анонимно) 25.11.10 в 08:38

0

Часто поведение команд можно изменить установкой переменных окружения. Как со стартом новой сесии bash, запускаемые программы из вашей командной строки bash будут видеть только переменные окружения, помеченные export. Например, команда man проверяет переменную PAGER, чтобы выяснить какую программу использовать для постраничного просмотра тескста.

(анонимно) 25.11.10 в 06:17

0

$ PAGER=less
$ export PAGER
$ man man

(анонимно) 14.11.10 в 17:35

0

Когда переменная PAGER установлена в less, вы будете видеть сначала одну страницу, а нажатие пробела будет перемещать вас а следующую страницу. Если вы измените переменную PAGER в cat, то весь текст отобразится сразу, без остановок на страницах.

(анонимно) 25.11.10 в 06:20

0

$ PAGER=cat
$ man man

(анонимно) 14.11.10 в 17:35

0
Минутку...

Следующая страница →