Синхронизация к источнику местного времени, когда ни один на самом деле не существует, является отличным способом иметь Ваши часы, выходят из строя. Вы обнаружили что твердый путь (также, как и я некоторое время назад). Это предназначается для ситуаций, где у Вас есть GPS, атомные часы, или что-то имело отношение, который физически подключен к машине. Если у Вас нет таких аппаратных средств, отключите их.
1. Какова цель ПУТИ?
PATH
переменная среды, которая содержит разделенный от двоеточия список каталогов, где Ваша оболочка будет искать исполняемые файлы, которые Вы называете на командной строке, не предоставляя явный путь им (как в Вашем jsdoc
пример). Таким образом, если Ваш PATH
имеет
/usr/bin:/bin:/home/bin
затем любой исполняемый файл Вы, вызов по имени будет разыскиваться в этих каталогах (в том порядке) и первый найденный исполняемый файл, являетесь выполняемым тем.
2. Каково различие между/etc/paths и ~/.bash_profile
Согласно этому вопросу на ServerFault, /etc/paths
используется для установки PATH
глобально (т.е. в масштабе всей системы, для всех пользователей), в то время как ~/.bash_profile
используется для установки предпочтений в расчете на пользователя (где ~
будет корневой каталог пользователя). В чем записан .bash_profile
может или добавить к глобальному PATH
от /etc/paths
или переопределите его полностью.
Для записи, /etc/paths
кажется, особенность Mac OS: Я не столкнулся с ним на GNU/Linux, по крайней мере.
Какова цель ПУТИ?
Это - как Ваша оболочка находит программы. Когда Вы вводите ls
, например, это запускает названную программу ls
который живет в /bin
в большинстве систем, включая Mac OS X. Ваша оболочка может только найти это потому что /bin
находится в PATH
.
Оболочка ищет программы в PATH
порядок, слева направо. Если существует два ls
программы в Вашей системе и их каталоги находятся оба в Вашем PATH
, это найдет тот в каталоге перечисленным сначала в Вашем PATH
.
Каково различие между/etc/paths и ~/.bash_profile
Пути начинаются /etc/paths
добавляются к PATH
при запуске во всех оболочках на Mac OS X.
~/.bash_profile
только один из нескольких сценариев оболочки, выполненных Bash при запуске, и несколько из них являются определенными для Bash. Поэтому при изменении оболочки — Mac OS X также поставлется tcsh
и zsh
, например — изменения, внесенные в /etc/bashrc
не обращайтесь к своей новой оболочке.
Кроме того, /etc/paths
конфигурационный файл системного уровня, в то время как ~/.bash_profile
в расчете на пользователя. Если бы у Вас было несколько интерактивных пользователей, настроенных на Вашем Mac, то Вы не хотели бы добавлять каталоги к /etc/paths
то, что Вы не хотели появляться в общем PATH
. То же верно для /etc/bashrc
, за исключением того, что, конечно, который только относится к пользователям, которые используют Bash в качестве их оболочки.
Каково различие между ПУТЕМ и $PATH и $ {ПУТЬ}?
Вы обычно только видите переменную без символа при установке переменной. FOO=bar
наборы FOO
переменная среды к строке bar
. Если Вы вводите set
, оболочка показывает Вам всем переменные среды, и в этом случае Вы также видите переменную без любого символа.
$PATH
и ${PATH}
являются обычно взаимозаменяемыми. Они говорят оболочке разворачивать ток PATH
оперативное значение переменной. Различие имеет отношение, как и где Вы используете их. Например:
$ FOO=bar
$ echo $FOO
bar
$ echo $FOOx
$ echo ${FOO}x
barx
Во втором echo
команда, оболочка ничего не печатает, потому что она просит, чтобы оболочка распечатала названную переменную FOOx
, который не существует; оболочка рассматривает несуществующие переменные как пустые. Поскольку третье echo
использует изогнутый синтаксис фигурной скобки, он позволяет оболочке видеть, что Вы запрашиваете FOO
переменная, и что x
просто другой символ, который Вы хотите распечатанный сразу позже.
Существует другой способ получить тот же эффект без фигурных скобок, между прочим:
$ echo "$FOO"x
barx
Переменные среды расширены в двойных кавычках, и кавычки отделяются x
от переменного расширения, таким образом, оболочка делает правильную вещь.
Я использую FOO
переменная среды здесь только для ясности. Все, что я записал выше, применяется точно также к PATH
, так как это - просто другая переменная среды. Тексты в качестве примера просто были бы намного длиннее.
Что экспорт СОЕДИНЯЕТ КАНАЛОМ средний? Когда мы экспортируем?
Взятие вышеупомянутого FOO
пример, если бы необходимо было запустить другую программу, она не видела бы FOO
переменная, потому что это не экспортируется. Это живет только в том одном экземпляре оболочки:
$ echo $FOO
bar
$ bash
$ echo $FOO
$ exit
$ export FOO
$ bash
$ echo $FOO
bar
Когда я сначала выполняю новое bash
оболочка под той, которую я уже использовал, затем попытайтесь показать значение FOO
, Я получаю пробел потому что FOO
не экспортировался, чтобы подпрограммы видели. Затем я вышел из второго bash
экземпляр, экспортируемый это, работал bash
снова, и теперь второй экземпляр видит значение FOO
.
Вы используете export
когда Вы хотите, чтобы подпрограммы видели набор значений в оболочке и не используете его, когда Вы не хотите, чтобы это произошло.
Как правило, я не экспортирую временные переменные в сценариях оболочки, потому что я не хочу, чтобы они изменились, как программы, запущенные из того сценария оболочки, ведут себя.
Я не собираюсь отвечать на любой из Ваших других вопросов. Вы, как только предполагается, задаете один вопрос за один раз. Я только ответил на это многие, потому что они неопределенно связаны. Все остальное принадлежит отдельного вопроса.
/etc/paths
на OSX. – terdon♦ 30.01.2014, 00:43