Я очень плохо знаком с Linux, и я поместил следующую команду в конце файла .profile
под моей домашней папкой:
export PATH="~/.composer/vendor/bin:$PATH"
Я знаю проблемы переменных среды и их значений немного из Windows, но в этом случае я хочу понять то, что эта команда делает, и что является частями, которые это включает:
Какова эта фраза "экспорта" в запуске? Это экспортирует данные, чтобы быть доступным для Bash?
Что является первым PATH
и что является вторым $PATH
, и почему нам нужно два?
Я читал здесь и в других местах в сети, говорил с другом об этом и решил, что как новичок (возможно, больше новичка Ubuntu затем некоторые здесь могли бы думать), я должен отобразить эту команду - я должен сделать карту и таким образом узнать, что это - whatabouts и местонахождение:
, Если на данный момент Вы не поняли, что-то в этой главе - не волнуется, это станет более ясным, поскольку Вы будете продолжать читать, но понимать этот вопрос, который действительно необходимо считать на Переменных среды (EVs), их значениях и цели. Я теперь попытаюсь объяснить команду в простых словах и в методе отображения для вновь прибывших как я, и только для вновь прибывших. Попробованный для приложения все усилия здесь...
export PATH="~/.composer/vendor/bin:$PATH"
исходное значение EV "ПУТЬ", поскольку это идет с Ubuntu 15.10:
/usr/bin:/usr/sbin
В самой команде отмечают, что у нас есть две фразы PATH. Последний является $PATH - $ говорит, "печатают исходное значение или значения EV рядом с Вами"; EV рядом с ним является PATH EV.
, Мы экспортировали сама переменная пути (сделал это доступным для подпроцессов также, Т.Е. процессов, которые работают в CLI, которые не являются на самом деле оболочкой Bash, но выполненный в нем (такой как Drush, который является Drupal CLI).
Помимо экспорта мы также развернули его: первая фраза PATH (PATH =) использовала нас для добавления дополнительного значения (~/.composer/vendor/bin:) к исходному значению (представленный $PATH).
двоеточие (:) в конце нового значения я упомянул в вышеупомянутом абзаце, использует для отличного новое значение от исходного.
"" область, в которой находятся value/s.
~ является домашней папкой.
я надеюсь, что после этого отображения, которое я сделал, команда будет более четкой новичкам как я.
Эти export
команда делает переменные доступными в подоболочках. Таким образом, без него переменная PATH
не была бы видима в подоболочках.
PATH
упоминается дважды:
=
знак. =
знак. Это заставляет старое значение быть частью нового значения. export PATH="~/.composer/vendor/bin:$PATH"
эти export
команда здания удара, переменные средств экспорта, чтобы быть envirement переменной. (Вы могли ввести help export
для склонности больше
(символы следуют, команда параметры, splited пространством, так в этом случае, там только один параметр)
эти PATH
имя переменной, обычно, предопределил varibale ударом, быть названным в Верхнем регистре.
=
средства присваивают значение этой переменной.
вся строка является значением varibale
эти $PATH
, своего рода funciton удара, названного variable expantion
, удар заменит значение существования PATH
в строке параметров, ПРЕЖДЕ ЧЕМ отправят строку в export
команда
:
в spcial символе в переменной ПУТИ и понятый под всем приложением, которые хотят использовать эту переменную. это означает разделитель. таким образом, у них будет много каталогов в переменной ПУТИ.
Какова эта фраза "экспорта" в запуске?
export
команда (более точно, это - встроенный Bash, т.е. это не исполняемый файл, существующий в PATH
, это - команда, которую Bash имеет встроенный сам по себе).
Это экспортирует данные, чтобы быть доступным для Bash?
export
устанавливает переменную среды на левой стороне присвоения на значение на правой стороне присвоения; такая переменная среды видима к процессу, который устанавливает ее и на все подпроцессы, порожденные в той же среде, т.е. в этом случае к экземпляру Bash это получает ~/.profile
и ко всем подпроцессам, порожденным в той же среде (который может включать, например, также другие оболочки, которые в свою очередь смогут получить доступ к ней).
Что является первым
PATH
и что является вторым$PATH
, и почему нам нужно два?
Первое PATH
как объяснено выше переменная среды, которая будет установлена с помощью export
.
С тех пор PATH
обычно содержит что-то когда ~/.profile
получен (по умолчанию, это содержит /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
), просто установка PATH
кому: ~/.composer/vendor/bin
сделал бы PATH
содержите только ~/.composer/vendor/bin
.
Таким образом, так как ссылки на переменную в команде заменены (или "расширены" до), значение переменной Bash во время оценки команды, :$PATH
помещается в конце значения, которому присвоят PATH
так, чтобы PATH
заканчивает тем, что содержал ~/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
(т.е. что PATH
уже содержит плюс ~/.composer/vendor/bin:
в запуске).
https://help.ubuntu.com/community/EnvironmentVariables, вероятно, поможет Вам. Также man bash
может быть очень полезным с пониманием, как это работает (по крайней мере, в Bash)
Так или иначе - что касается PATH=
Вы в основном устанавливаете PATH
переменная, добавляя некоторые новые пути для поиска, уже добавив в конце / ранее установленные пути, с $PATH
(который является в основном ссылкой на PATH
переменная).
Так, скажите Ваш PATH
был до сих пор установлен на что-то как:
PATH="x:y:z"
и затем Вы устанавливаете
PATH="a:b:c:$PATH"
Ваш PATH
после того, как это будет похоже:
a:b:c:x:y:z
Я надеюсь, что это имеет смысл.
И к тому же Вы экспортируете новую переменную, таким образом, она известна в Вашей среде включая также дочерние процессы / подоболочки.
Просто знайте также что порядок каталогов, как начато PATH
может быть важным. И что-то как PATH="$PATH:a:b:c"
даст Вам результат:
x:y:z:a:b:c
который будет влиять на порядок каталогов / пути при поиске команды (если у Вас будет своя команда в больше чем одном из каталогов, то найденное первое будет использоваться - который может иногда давать Вам некоторые неожиданные результаты).
Вот команда так, чтобы все могли следовать вперед, поскольку они проходят пункты маркированного списка. export PATH="~/.composer/vendor/bin:$PATH"
export
окружите встроенный (значение, что существует нет /bin/export
, это - вещь оболочки), команда в основном делает переменные среды доступными для других программ названный от bash
(см. связанный вопрос в Дополнительном Чтении), и подоболочки. PATH
переменная позже.$PATH
значение по умолчанию PATH
присвоение (или по крайней мере то, на что переменная похожа до этой команды, появляется в Вашем .bashrc
или .profile
), и разверните его.~/.composer/vendor/bin
движение должно расшириться до /home/username/.composer/vendor/bin
, где .composer
скрытая папка из-за ведущей точки.~/.composer/vendor/bin:$PATH
теперь преобразовали в длинный список папок, разделенных :
. Все включается в двойные кавычки так, чтобы мы включали папки с пробелами в их пути.PATH
переменные и внешние команды позволили использовать егоПростой пример
Моя интерактивная оболочка на самом деле mksh
, который, оказывается, также имеет export
встроенный. При помощи export
установить VAR
, моя переменная может передаваться и использоваться последующей цепочкой команд/подпроцессов, куда я экспортировал ту же самую переменную
$ echo $SHELL
/bin/mksh
$ VAR="HelloAskUbuntu"
$ bash -c 'echo $VAR'
$ export VAR="HelloAskUbuntu"
$ bash -c 'echo $VAR'
HelloAskUbuntu
$
Дополнительное чтение