Как переключиться на bash в linux

Обновлено: 05.07.2024

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

Введение в bash

Shell

Если вы используете линукс, то знаете что после логина вас приветствует приглашение командного интерпретатора. Например такое:

У вас запущен bash?

Проверить запущен ли bash можно следующей командой:

\$ echo \$SHELL /bin/bash

Если в результате выполнения этой команды вы получили ошибку или её вывод отличается от того что в примере, то возможно в вашей системе в качестве командной оболочки используется не bash. Несмотря на это, большая часть материала будет актуальна, но все же рекомендуем вам переключиться на bash. Сделать это можно (если bash установлен в системе) командой:

Что такое bash

Давайте начнем использовать bash для навигации по файловой системе. Для начала напечатайте следующую команду:

Этой командой мы указали bash-у что хотим переместиться в корневую директорию — /. Все директории в системе организованы в древовидную структуру и / это её начало (или корень). Команда cd служит для изменения текущей рабочей директории.

Чтобы узнать в каком месте файловой системы в данный момент вы находитесь (текущую рабочую директорию) наберите:

В приведенном выше примере / — аргумент команды cd — называется путь. Это место файловой системы, куда мы хотим переместиться. В данном случае / — абсолютный путь, это значит что путь указан относительно корневой директории.

Абсолютные пути

Вот несколько примеров абсолютных путей

/dev /usr /usr/bin /usr/local/bin

Как вы уже могли заметить, все эти пути объединяет то, что они начинаются с /. Указывая путь /usr/local/bin в качестве аргумента команде cd мы говорим ей перейти в корневую директорию /, затем в директорию usr, потом в local и bin. Абсолютные пути всегда начинаются с /

Относительные пути

Второй вид путей называется относительными. Bash, команда cd и другие команды отсчитывают эти пути относительно текущей директории. Относительные пути никогда не начинаются с /. Например, если мы находимся в /usr

Затем мы можем перейти в /usr/local/bin используя относительный путь

\$ cd local/bin \$ pwd /usr/local/bin

\$ pwd /usr/local/bin \$ cd .. \$ pwd /usr/local

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

\$ pwd /usr/local \$ cd ../share \$ pwd /usr/share

Примеры с использованием относительных путей

Относительные пути могут быть довольно сложными. Вот несколько примеров. Результат выполнения команд не показан, попробуйте определить в какой директории вы окажетесь используя bash.

\$ cd /bin \$ cd ../usr/share/zoneinfo \$ cd /usr/X11R6/bin \$ cd ../lib/X11 \$ cd /usr/bin \$ cd ../bin/../bin

В последнем примере myprog это исполняемый файл находящийся в текущей директории, который будет запущен на исполнение.

cd и домашняя директория пользователя

Для того чтобы перейти в домашнюю директорию, нужно набрать

\$ ./myprog /home/user/myfile.txt

Однако, использовать абсолютные пути к файлам не всегда удобно. Эту же операцию можно сделать при помощи

— специальное имя, указывающее в bash на домашнюю директорию пользователя.

Домашние директории других пользователей

Но что если нам нужно указать файл в домашней директории другого пользователя? Для этого после тильды нужно указать имя этого пользователя. Например, чтобы указать на файл fredsfile.txt находящийся в домашней директории пользователя fred:

Команды линукс

Введение в ls

Вероятно вы уже знакомы с командой ls, которая, вызванная без аргументов, выводит на экран список файлов хранящихся в рабочей директории:

\$ cd /usr \$ ls X11R6 doc i686-pc-linux-gnu lib man sbin ssl bin gentoo-x86 include libexec portage share tmp distfiles i686-linux info local portage.old src

Если указать опцию -a, можно будет увидеть все файлы, включая скрытые (имена которых начинаются с точки).

\$ ls -a . bin gentoo-x86 include libexec portage share tmp .. distfiles i686-linux info local portage.old src X11R6 doc i686-pc-linux-gnu lib man sbin ssl

Подробный список директорий

\$ ls -l /usr drwxr-xr-x 7 root root 168 Nov 24 14:02 X11R6 drwxr-xr-x 2 root root 14576 Dec 27 08:56 bin drwxr-xr-x 2 root root 8856 Dec 26 12:47 distfiles lrwxrwxrwx 1 root root 9 Dec 22 20:57 doc -> share/doc drwxr-xr-x 62 root root 1856 Dec 27 15:54 gentoo-x86 drwxr-xr-x 4 root root 152 Dec 12 23:10 i686-linux drwxr-xr-x 4 root root 96 Nov 24 13:17 i686-pc-linux-gnu drwxr-xr-x 54 root root 5992 Dec 24 22:30 include lrwxrwxrwx 1 root root 10 Dec 22 20:57 info -> share/info drwxr-xr-x 28 root root 13552 Dec 26 00:31 lib drwxr-xr-x 3 root root 72 Nov 25 00:34 libexec drwxr-xr-x 8 root root 240 Dec 22 20:57 local lrwxrwxrwx 1 root root 9 Dec 22 20:57 man -> share/man lrwxrwxrwx 1 root root 11 Dec 8 07:59 portage -> gentoo-x86/ drwxr-xr-x 60 root root 1864 Dec 8 07:55 portage.old drwxr-xr-x 3 root root 3096 Dec 22 20:57 sbin drwxr-xr-x 46 root root 1144 Dec 24 15:32 share drwxr-xr-x 8 root root 328 Dec 26 00:07 src drwxr-xr-x 6 root root 176 Nov 24 14:25 ssl lrwxrwxrwx 1 root root 10 Dec 22 20:57 tmp -> ../var/tmp

Как посмотреть только директории

\$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share drwxr-xr-x 4 root root 96 Dec 18 18:17 ../share drwxr-xr-x 17 root root 576 Dec 24 09:03 /usr drwxr-xr-x 2 root root 3192 Dec 26 12:52 /usr/X11R6/bin drwxr-xr-x 2 root root 14576 Dec 27 08:56 /usr/bin

Рекурсивный список и информация о инодах

\$ ls -i /usr 1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 1513 i686-pc-linux-gnu 5120 local 13408 share 8316 distfiles 1517 include 776 man 23779 src 43 doc 1386 info 93892 portage 36737 ssl 70744 gentoo-x86 1585 lib 5132 portage.old 784 tmp

Что такое иноды?

\$ ls -id /usr/local 5120 /usr/local

Как можем видеть, инод директории /usr/local — 5120. Теперь посмотрим какой инод у директории /usr/local/bin/.

\$ ls -id /usr/local/bin/.. 5120 /usr/local/bin/..

Получается, что иноды директорий /usr/local и /usr/local/bin/.. совпадают! Это значит, что на инод 5120 ссылаются два имени: /usr/local и /usr/local/bin/.. То есть это два разных имени одной директории. Каждый инод указывает на определенное место на диске.

\$ ls -dl /usr/local drwxr-xr-x 8 root root 240 Dec 22 20:57 /usr/local

На этом примере видно (второй столбец), что на директорию /usr/local ссылаются 8 разных объектов файловой системы. Вот их имена:

/usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/.. /usr/local/src/..

mkdir

Давайте рассмотрим команду mkdir. Она служит для создания новых директорий. В следующем примере демонстрируется создание трех новых директорий (tic, tac, toe) в директории /tmp

\$ cd /tmp $ mkdir tic tac toe

По умолчанию команда mkdir не может создать вложенной структуры директорий. Поэтому, если вам нужно создать несколько вложенных одна в другую директорий (won/der/ful), то вам придется три раза поочередно вызывать эту команду:

\$ mkdir won/der/ful mkdir: cannot create directory 'won/der/ful': No such file or directory \$ mkdir won \$ mkdir won/der \$ mkdir won/der/ful

\$ mkdir -p easy/as/pie

Чтобы узнать о возможностях этой утилиты подробнее, прочитайте справку, которая вызывается командой man mkdir. Справки есть практически ко всем командам из этого руководства (например man ls), кроме cd, т.к. она встроена в bash (для таких команд справка вызывается так: help cd)

touch

Перейдем к изучению команд cp и mv, служащих для копирования, переименования и перемещения файлов и директорий. Но перед этим создадим пустой файл в директории /tmp при помощи команды touch:

\$ cd /tmp \$ touch copyme

Команда touch обновляет время последнего доступа к файлу (шестая колонка вывода команды ls -l) если он уже существует или создает новый пустой файл, если его ещё нету. После этой операции у нас должен появиться пустой файл /tmp/copyme.

Теперь, когда у нас есть пустой файл, запишем в него текстовую строку при помощи команды echo, которая выводит переданный ей аргумент на стандартное устройство вывода (текстовый терминал в нашем случае).

\$ echo "firstfile" firstfile

Чтобы записать строку в наш файл, перенаправим в него вывод команды echo:

\$ echo "firstfile" > copyme

\$ ls -l copyme -rw-r--r-- 1 root root 10 Dec 28 14:13 copyme

cat и cp

Для вывода содержимого файла на терминал используется команда cat:

\$ cat copyme firstfile

\$ cp copyme copiedme

Можем убедиться, что новая копия файла имеет другой номер инода (это значит что мы получили действительно новый отдельный файл, а не просто ссылку на старый)

\$ ls -i copyme copiedme 648284 copiedme 650704 copyme

\$ mv copiedme movedme \$ ls -i movedme 648284 movedme

Номер инода не изменяется только при условии, что переименованный файл остается в пределах той файловой системы где находился исходный файл. Мы рассмотрим подробнее устройство файловых систем в одной из следующих частей этого пособия.

Команда mv позволяет не только переименовывать файлы, но и перемещать их. Например, чтобы переместить файл /var/tmp/myfile.txt в директорию /home/user нужно дать команду:

\$ mv /var/tmp/myfile.txt /home/user

Файл будет перемещен в домашнюю директорию пользователя user даже если она находится в другой файловой системе (в этом случае файл будет скопирован в новое место после чего оригинал будет удален). Как вы могли уже догадаться, перемещение файла в другую файловую систему приводит к изменению его инода. Это происходит потому, что каждая файловая система имеет свой отдельный набор инодов.

Нужно заметить, существует вероятность, что новый присвоенный номер инода может совпасть со старым, но она чрезвычайно мала.

Чтобы переместить одновременно несколько файлов в одну директорию нужно написать:

\$ mv /var/tmp/myfile1.txt /var/tmp/myfile2.txt /home/user

\$ mv -t /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt

\$ mv -vt /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt '/var/tmp/myfile1.txt' -> '/home/user/myfile1.txt' '/var/tmp/myfile2.txt' -> '/home/user/myfile2.txt'

Хотите использовать C Shell? Следуйте инструкциям ниже, чтобы переключиться с Bash на C Shell в Linux.

Примечание: вы можете переключиться с Bash на Fish Shell, если вы не являетесь поклонником C Shell. Как вариант, вы также можете попробовать ZSH.

Установить оболочку C

Чтобы установить его, откройте окно терминала и следуйте инструкциям по настройке оболочки C Shell в операционной системе Linux, которую вы используете на своем компьютере.

Ubuntu

C Shell находится в основных источниках программного обеспечения Ubuntu и может быть установлена ​​с помощью Квартира инструмент диспетчера пакетов.

Debian

Несмотря на то, что Debian Linux обычно отстает от обновлений пакетов, им удается распространять несколько обновленную версию C Shell в своем основном репозитории программного обеспечения. Его можно установить с помощью Apt-get упаковочный инструмент.

Arch Linux

Пользователи Arch Linux любят экспериментировать с альтернативами bash. В результате даже малоизвестные альтернативы Bash, такие как C Shell, доступны для установки в репозитории программного обеспечения по умолчанию для данного дистрибутива. Чтобы получить его на Arch, используйте Pacman пакетный инструмент.

Fedora

Нужна C Shell на вашем ПК с Fedora Linux? Вам нужно будет установить его с Dnf менеджер пакетов, поскольку он не загружается в Fedora по умолчанию.

OpenSUSE

Как и в других основных дистрибутивах Linux, OpenSUSE имеет C Shell, доступную в качестве альтернативы Bash в их основных источниках программного обеспечения. Чтобы установить его, запустите следующее Zypper команда.

sudo zypper установить tcsh

Общий Linux

Итак, вы используете менее известный дистрибутив Linux и хотите использовать C Shell. Что вы делаете? Откройте терминал и найдите «tcsh» или «c shell» с помощью диспетчера пакетов вашего ПК с Linux. Вы обязательно найдете этот пакет даже в самой неизвестной ОС Linux, так как Tcsh существует уже довольно давно.

Список оболочек

Прежде чем вы сможете переключиться с Bash на C Shell на вашем компьютере с Linux, вам необходимо выяснить, где находится двоичный файл Tcsh на вашем компьютере. Знание местоположения этого двоичного файла критически важно, потому что без этой информации Linux не сможет заменить оболочку командной строки по умолчанию для вашего пользователя.


Запуск Кот Команда выдаст список расположения множества различных оболочек, установленных на вашем ПК с Linux. Несомненно, их будет больше одного, и это может сбивать с толку.

Примечание. Если вы не хотите сканировать этот файл на наличие «Tcsh», рассмотрите возможность объединения Кот команда с grep команда, чтобы отфильтровать это.

Выделите результат / и т.д. / оболочки / и сделайте копию местоположения C Shell. Или выведите его в текстовый файл для дальнейшего использования.

Переход с Bash на C Shell

Установка оболочки C по умолчанию выполняется с помощью чш команда. Обратите внимание, что чш Команда должна запускаться без прав sudo или root. Если эта команда запускается от имени пользователя root, вы можете случайно поменять оболочку на пользователя root в Linux, а не на своего пользователя.

В терминале используйте чш и используйте ее для переключения с Bash (или любой другой оболочки, которую вы используете) на Tcsh.


После указания местоположения оболочки C в терминале Linux нажмите Войти на клавиатуре и введите пароль пользователя. Повторите этот процесс для каждого пользователя, которому необходимо использовать C Shell на вашем ПК с Linux.

Отключить C Shell

Пробовали C Shell и не понравилось? Вернитесь назад, следуя инструкциям ниже!

Шаг 1: Откройте терминал и введите команду изменения оболочки.

Шаг 2: Писать / bin / bash / когда его просят «ввести новое значение».

Шаг 3: Введите ваш пароль. Затем закройте терминал и перезагрузитесь. После запуска Bash снова будет по умолчанию.

Стилизованный терминал Linux с линиями зеленого текста на ноутбуке.

фатмавати ахмад дзенури / Shutterstock

В Linux существует более одного типа переменных среды. Узнайте, как их увидеть, создать их для локального и удаленного входа и заставить их пережить перезагрузки.

Как работают переменные среды

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

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

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

Среды и Наследование

Когда оболочка запускается, она проходит фазу инициализации. Именно в этот момент он считывает переменные окружения, которые определяют среду оболочки.

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

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

Глобальные переменные среды

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

  • РАКУШКА: Имя оболочки, которая запускается при открытии окна терминала. В большинстве дистрибутивов Linux это будет баш если вы не изменили его по умолчанию.
  • СРОК: Окна терминала на самом деле эмулируют аппаратный терминал. Это содержит тип аппаратного терминала, который будет эмулироваться.
  • USER: Имя пользователя текущего человека, использующего систему.
  • PWD: Путь к текущему рабочему каталогу.
  • OLDPWD: Каталог, в котором вы находились до перехода в текущий рабочий каталог.
  • LS_COLORS: Список цветовых кодов, используемых ls выделить разные типы файлов,
  • MAIL: Если mail На вашем компьютере Linux установлена ​​система (по умолчанию это не так), она будет содержать путь к почтовому ящику текущего пользователя,
  • ДОРОЖКА: Список каталогов, по которым оболочка будет искать исполняемые файлы команд.
  • LANG: Настройки языка, локализации и кодировки символов.
  • ДОМ: Домашний каталог текущего пользователя.
  • _: Подчеркивание ( _ ) переменная окружения содержит последнюю введенную команду.

СВЯЗАННЫЕ С: Как использовать pushd и popd в Linux

Мы можем видеть, что некоторые из них настроены на использование ничего более сложного, чем echo , который будет записать значения в окно терминала, Чтобы увидеть ценность удерживается переменной среды, вам нужно добавить знак доллара ( $ ) к началу своего названия.

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

echo $ SHELL в окне терминала

Чтобы создать свой собственный Глобальный переменные среды, добавьте их в /etc/environment файл. Вам нужно использовать sudo редактировать этот файл:

sudo gedit / etc / environment в окне терминала

Чтобы добавить переменную среды, введите ее имя, знак равенства ( = ) и значение, которое вы хотите сохранить в переменной среды. Не ставьте пробел до или после знака равенства ( = ). Имя переменной окружения может содержать буквы, подчеркивание ( _ ) или цифры. Однако первый символ имени не может быть числом.

Если в значении есть пробелы, убедитесь, что вы заключили все значение в кавычки ( " ).

Файл / etc / environment открывается в редакторе и добавляется новая переменная окружения.

Сохраните файл, а затем выйдите и снова войдите в систему. использование echo чтобы проверить, что новая переменная существует и содержит значение, которое вы установили:

echo $ WEBSITE в окне терминала.

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

echo $ WEBSITE в окне терминала.

к увидеть все переменные среды сразу наберите printenv , Выводов много, поэтому есть смысл передать его через sort , а затем в less :

принтенв | сортировать | меньше в окне терминала.

Сортированный список переменных среды отображается для нас в less ,

Мы можем передать вывод через grep искать переменные среды связанные с конкретной темой,

принтенв | grep GNOME в окне терминала.

СВЯЗАННЫЕ С: Как редактировать текстовые файлы графически в Linux с помощью gedit

Переменные среды Shell

Вот некоторые из переменных среды оболочки, используемых в bash диктовать или записывать его поведение и функциональность. Некоторые значения обновляются при использовании терминала. Например, COLUMNS Переменная окружения будет обновлена ​​с учетом изменений, которые вы можете внести в ширину окна терминала:

  • BASHOPTS: Параметры командной строки, которые использовались при bash был запущен.
  • BASH_VERSION: bash номер версии в виде строки слов и цифр.
  • BASH_VERSINFO: bash версия в виде цифры.
  • КОЛОННЫ: Текущая ширина окна терминала.
  • DIRSTACK: Каталоги, которые были добавлен в стек каталогов посредством pushd команда.
  • HISTFILESIZE: Максимальное количество линии разрешены в history файл.
  • HISTSIZE: Количество строк history разрешено в памяти.
  • HOSTNAME: Имя хоста компьютера.
  • IFS:Внутренний разделитель полей используется для разделения ввода в командной строке. По умолчанию это пробел.
  • PS1: PS1 Переменная окружения содержит определение основной, командной строки и командной строки. Набор токенов, называемых escape-последовательностями, может быть включен в определение вашей командной строки. Они представляют такие вещи, как имя хоста и пользователя, текущий рабочий каталог и время.
  • PS2: Когда команда занимает более одной строки и ожидается больше ввода, отображается дополнительная командная строка. PS2 Переменная окружения содержит определение этого вторичного приглашения, которое по умолчанию имеет знак больше, чем ( > ).
  • SHELLOPTS: Параметры оболочки, которые вы можете установить с помощью set вариант.
  • UID:Идентификатор пользователя текущего пользователя.

СВЯЗАННЫЕ С: Как использовать pushd и popd в Linux

Давайте проверим некоторые из этих переменных оболочки:

эхо $ BASH_VERSION в окне терминала.

Для полноты, вот токены, которые вы можете использовать в определениях командной строки:

Вы найдете определение вашего PS1 переменная окружения в вашем .bashrc файл.

Создание переменных среды сеанса

Чтобы создать переменные среды для собственного использования, добавьте их в конец .bashrc файл. Если вы хотите, чтобы переменные среды были доступны для удаленных сеансов, таких как SSH-соединения, вам необходимо добавить их в свой .bash_profile файл, а также.

Формат определения переменной среды одинаков для обоих файлов. Чтобы добавить определение к вашему .bash_profile файл, введите это в вашем домашнем каталоге:

Файл .bashrc был помещен в редактор, и в качестве последней строки в файле добавлена ​​новая переменная среды.

Мы добавили переменную окружения INHERITED_VAR , Обратите внимание на слово «экспорт» в начале строки.

Гедит .bashrc в окне терминала.

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

, .bashrc в окне терминала.

Теперь давайте создадим переменную окружения в командной строке:

LOCAL_VAL =

Если мы используем echo Мы видим, что обе переменные окружения доступны для нас:

эхо $ LOCAL_VAR в окне терминала.

Вы заметите определение INHERITED_VAR переменная окружения имела слово «экспорт» в начале строки. Это означает, что переменная окружения будет наследоваться дочерними процессами текущей оболочки. Если мы запустим еще один, используя bash Команда, мы можем проверить две переменные из дочерней оболочки:

Баш в окне терминала

Как видите, INHERITED_VAR доступен в дочерней оболочке, но LOCAL_VAR не является. Мы просто получаем пустую строку.

Хотя «export» добавляет переменную части среды в среду, которую наследуют дочерние процессы, INHERITED_VAR не является глобальной переменной среды. Например, пользователь mary не могу сослаться на это:

эхо $ INHERITED_VAR в окне терминала.

Закрыть нашего ребенка bash сеанс мы используем exit :

Унаследованные среды также влияют на сценарии. Вот простой скрипт, который записывает значения наших трех переменных среды в окно терминала:

Это было сохранено в файл с именем envtest.sh , а затем сделал исполняемым со следующим:

Когда мы запускаем скрипт, он может получить доступ к двум из трех переменных окружения:

./envtest.sh в окне терминала.

Скрипт может видеть WEBSITE глобальная переменная среды и INHERITED_VAR экспортированная переменная окружения. Не может получить доступ LOCAL_VAR даже если скрипт выполняется в той же оболочке, где была создана переменная.

Если нам нужно, мы можем экспортировать переменную окружения из командной строки. Мы сделаем это с нашими LOCAL_VAR и снова запустите скрипт:

экспортировать LOCAL_VAR в окне терминала.

Переменная окружения была добавлена ​​в среду текущей оболочки, и поэтому она появляется в среде, которая наследуется сценарием. Сценарий также может ссылаться на эту переменную среды.

Удаленные подключения

Глобальные переменные среды доступны для сеансов удаленного входа, но если вы хотите, чтобы локально определенные переменные среды были доступны вам удаленно, вы должны добавить их в свой .bash_profile файл. Вы можете установить ту же переменную среды в .bashrc а также .bash_profile файлы с разными значениями. Это может быть использовано скриптом, скажем, для изменения его поведения для людей, использующих систему локально или удаленно.

Для редактирования .bash_profile файл, мы будем использовать gedit снова:

gedit .bash_profile в окне терминала.

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

Сохраните ваши изменения и закройте gedit ,

На другом компьютере мы сделаем SSH подключение к тестовому компьютеру,

ssh dave@howtogeek.local в окне терминала.

Как только мы подключимся, мы снова запустим скрипт:

./envtest.sh в окне терминала.

.bash_profile файл был прочитан как часть инициализации удаленного входа в систему, и INHERITED_VAR Переменная окружения доступна для нас и самого скрипта.

Сброс переменной среды

Чтобы сбросить переменную среды, используйте unset команда, Если мы сбросим глобальную переменную среды, WEBSITE и экспортированная переменная среды, INHERITED_VAR они больше не будут доступны ни в командной строке, ни в дочерних процессах:

Отключение переменной окружения в Bash в Linux.

Следует отметить, что это только меняет доступность глобальных переменных среды для вас в этом сеансе. Другой человек, который вошел в систему одновременно, все еще сможет получить доступ к своему экземпляру этой глобальной переменной среды. Его экземпляр был инициализирован и прочитан из /etc/environment файл во время процесса входа в систему, и не зависит от чьей-либо копии переменной.

Как пример, пользователь mary все еще может получить доступ к WEBSITE переменная окружения и читать ее значение, даже если пользователь dave имеет unset это в его сессии:

echo% ВЕБ-САЙТ в окне терминала.

Экологический контроль

Переменные среды могут использоваться, чтобы позволить сценариям и приложениям знать, как они должны себя вести. Их можно использовать для хранения настроек или небольших объемов данных. Например, сценарий может заполнять среду значением, на которое могут ссылаться другие сценарии, не записывая их в файл.


Как изменить оболочку Shell в Linux

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

Когда вы работаете в терминале, именно командная оболочка обрабатывает вводимые вами команды. Более того, оболочки Linux поддерживают написание программ на языке оболочки.

Оболочки Linux

Одна из самых популярных командных оболочек — это оболочка Bash (Bourne Again Shell). Она используется по умолчанию в большинстве дистрибутивов Linux.

Существуют разные оболочки Linux. Можно отметить:

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

Как определить текущую командую оболочку

Есть несколько способов определить оболочку, используемую по умолчанию в вашей системе Linux. Рассмотрим несколько из них, так как в разных системах (и оболочках) какие-то способы могут не сработать.

Также нужно знать, что у разных пользователей системы могут использоваться разные оболочки.

Способ 1

Переменная окружения SHELL хранит путь до исполняемого файла оболочки. Выполним команду:

Из вывода команды, мы видим, что используется оболочка bash.

Способ 2

Также можно воспользоваться командой echo $0 . Данная команда выведет на экран имя текущего работающего процесса, внутри которого она выполнена. Так как мы выполняем команду внутри оболочки, то будет выведено имя оболочки.

Способ 3

Определим, работающий процесс оболочки командой ps.

Определить текущую оболочку Shell в Linux

Как посмотреть список оболочек, доступных в системе

Список оболочек, которые в данный момент установлены и доступны в системе Linux, хранится в файле /etc/shells

Выведем содержимое файла /etc/shells , для этого выполняем команду:

Список командных оболочек Linux

Как временно переключиться на другую оболочку

Чтобы временно переключиться на другую оболочку, достаточно выполнить в терминале команду, соответствующую ее имени. После этого вы переключитесь на новую оболочку.

Например, переключимся на оболочку sh. Выполняем команду:

Переключиться на другую оболочку в Linux

Как изменить оболочку

Для изменения командной оболочки на постоянной основе служит команда chsh (от слов change shell).

Чтобы изменить оболочку текущего пользователя нужно выполнить команду:

В качестве параметра путь_новой_оболочки необходимо указать путь до исполняемого файла оболочки, который вы можете найти в файле /etc/shells (см. выше).

Например, изменим оболочку на sh. Для этого выполняем команду (при выполнении команды нужно будет ввести пароль):

После этого нужно выйти и снова войти в систему.

Чтобы изменить оболочку, используемую по умолчанию, для другого пользователя, то команде chsh необходимо указать имя этого пользователя:

Заключение

Мы рассмотрели, как определить текущую оболочку Linux, как просмотреть список доступных оболочек, а также как изменить оболочку, используемую по умолчанию.

Чтобы получить информацию о какой-либо оболочке (доступной в системе) можно воспользоваться Man-страницами. Например:

Дополнительные оболочки можно устанавливать средствами системы (из репозиториев). Например, для установки оболочки fish в Ubuntu Linux, выполните команду

Читайте также: