Наиболее употребительные команды пользователя
Команды управления окружением
Любая команда, запускаемая пользователем - будь то системная команда, компилятор или программа пользователя, выполняется в окружении, сформированном оболочкой. Это окружение формируется с помощью конфигурационных файлов. Механизм формирования окружения заключается, главным образом, в установке правильных значений для переменных окружения. К сожалению, в этом вопросе в UNIX-подобных системах единого стандарта нет.
В каждую версию системы включается несколько командных интерпретаторов и пользователю предлагается самому выбирать ту или иную оболочку. С точки зрения выполнения команд это никак не проявляется – любая внешняя команда или программа пользователя будет одинаковым образом выполняться в любой оболочке. А вот с точки зрения формирования среды и внутренних команд среды, различия имеются. Ранее упоминалось, что в UNIX-подобных системах поддерживаются два семейства оболочек (shell):
Bourne Shell (sh, ksh, bash) и
C Shell (csh, zsh, tcsh).
Оболочки имеют немного отличающийся синтаксис встроенных команд и используют различные конфигурационные файлы. Наибольшее распространение на сегодняшний день получили tcsh и bash, ставший фактически стандартным в Linux системах, поскольку в полной мере соответствует стандарту Posix.
Конфигурационные файлы:
bash - /etc/profile, ~/bash_profile, ~/bash_login, ~/.profile, ~/.bashrc
tcsh - /etc/csh.cshrc /etc/csh.login, ~/.login, ~/.cshrc ~/.tcshrc,
Таким образом видно, что часть установок делается системным администратором, а часть выполняется в персональных конфигурационных файлах каждого пользователя. Необходимые установки можно делать в любом из перечисленных файлах, но при этом следует иметь в виду, что некоторые конфигурационные файлы выполняются только один раз - при входе в систему, а другие каждый раз при запуске нового shell.
В оболочке bash действует следующий сценарий:
- - при интерактивном запуске выполняется файл /etc/profile, а затем ищутся файлы в следующей последовательности ~/bash_profile, ~/bash_login ~/.profile и на исполнение запускается первый из найденных;
- - при не интерактивном запуске выполняется только ~/.bashrc .
В оболочке tcsh действует следующий сценарий:
- - при интерактивном запуске выполняются /etc/csh.cshrc , /etc/csh.login, а затем ищутся файлы ~/.tcshrc , ~/.cshrc и выполняется первый из них. Затем исполняется ~/.login ;
- - при не интерактивном запуске выполняются /etc/csh.cshrc и один из ~/.tcshrc или ~/.cshrc .
Переменные среды, устанавливаемые всеми оболочками, в основном совпадают, однако в каждой из оболочек имеются переменные, которые отсутствуют в других. Для того, чтобы посмотреть все установленные переменные среды служит команда:
env
Эта команда не является встроенной командой оболочки, поэтому она работает во всех оболочках. Перечислим наиболее важные переменные среды, которые могут потребовать корректировки:
- TERM – тип терминала ( например xterm, vt100), требуется для правильной работы терминальных редакторов;
- SHELL – оболочка, устанавливаемая при входе;
- PATH – содержит список директорий, в которых ищутся команды. В том числе и программы пользователя. Например PATH=/bin:/usr/bin:/usr/local/bin:~/bin:.:
Просмотр выполняется слева направо, исполняется первая найденная команда. Каталог ~/bin указывает на то, что команды(программы) следует искать в пользовательском каталоге bin, а '.' на то, что поиск выполнять в текущем каталоге. Проверить, из какого каталога какая будет исполнена команда можно с помощью команды:
which команда
- LD_LIBRARY_PATH - список директорий, в которых ищутся динамические библиотеки, подключаемые во время выполнения программы. Пример: LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:~/lib
- MANPATH – путь поиска man-страниц. Важна для правильной работы команды man команда , которая позволяет получить описание любой команды. Если команда существует, а описание по ней не выдается – значит неправильно установлена эта переменная.
- DISPLAY – переменная, указывающая экран, для выдачи графической информации.
- Примеры:
- DISPLAY=:0.0 - если пользователь работает на консоли компьютера;
- DISPLAY=имя_компьютера:0.0 или IP_adress:0.0 – если пользователь работает с удаленного компьютера. Здесь имя_компьютера – это имя того компьютера, с которого работает пользователь (или IP адрес).
В оболочке tcsh имеется переменная REMOTEHOST, которая позволяет автоматически устанавливать правильное значение для переменной DISPLAY при подключении с удаленного компьютера. В оболочке bash такой переменной, к сожалению, нет и для того, чтобы работать с графическими приложениями необходимо устанавливать эту переменную.
Некоторые приложения требуют установки своих переменных. Например, на многопроцессорных(многоядерных) системах выполнение многонитевых программ регулируется переменной OMP_NUM_THREADS, указывающей максимальное число нитей, которое может запускаться на системе.
Команда env выдает довольно большой объем информации. Для того, чтобы посмотреть значение конкретной переменной можно воспользоваться командой:
echo $ИМЯ_ПЕРЕМЕННОЙ - здесь символ $ означает извлечение значения переменной.
Установка переменных окружения по разному выполняется в bash и tcsh.
Bash
- VAR=value - присваивание переменной VAR значения value;
- export VAR – экспорт переменной в глобальное окружение.
- Эти две операции можно совместить:
export VAR=value
Внимание! Около знака равенства не должно быть пробелов. - Пример:
- export PATH=$PATH:/usr/local/mpi/bin – в переменную PATH добавили директорию с командами MPI (/usr/local/mpi/bin).
Tcsh
- setenv VAR value - установка переменной выполняется специальной командой. Команда setenv устанавливает переменные окружения или глобальные переменные. В tcsh помимо переменных окружения имеется набор внутренних переменных оболочки. Они устанавливаются командой set .
- Пример:
- setenv PATH $PATH:/usr/local/mpi/bin – добавление в переменную окружения PATH каталога /usr/local/mpi/bin .
- set prompt="`/usr/bin/uname -n`:`pwd`->% " - установка переменной prompt , определяющей вид приглашения оболочки в tcsh: rsuib:/export/home/victor->% .