Копия среды распространяет к подоболочкам, таким образом, это работает:
$ export MY_VAR=200
$ bash
$ echo $MY_VAR
200
но так как это - копия, Вы не можете получить то значение до родительской оболочки — не путем изменения среды, по крайней мере.
Это кажется, что Вы на самом деле хотите пойти шаг вперед, который должен сделать что-то, что действует как глобальная переменная, совместно использованная "одноуровневыми" оболочками, инициируемыми отдельно от родителя — как Ваша новая вкладка в Терминале Gnome.
Главным образом ответ, "Вы не можете, потому что переменные среды не прокладывают себе путь". Однако существует другой ответ, который является, ну, в общем, можно всегда изрубить что-то. Один подход должен был бы записать значение переменной в файл, как ~/.myvar
, и затем включайте это в ~/.bashrc
. Затем каждая новая оболочка запустится со значения, считанного из того файла.
Вы могли пойти, шаг вперед — делает ~/.myvar
будьте в формате MYVAR=200
, и затем набор PROMPT_COMMAND=source ~/.myvar
, который заставил бы значение быть перечитанным каждый раз, когда Вы получаете новую подсказку. Это все еще не вполне общая глобальная переменная, но это начинает действовать как он. Это не активируется, пока подсказка не возвращается, тем не менее, который в зависимости от то, что Вы пытаетесь сделать, могло быть серьезным ограничением.
И затем, конечно, следующая вещь состоит в том, чтобы автоматически записать изменения в ~/.myvar
. Это становится немного более сложным, и я собираюсь остановиться в этой точке, потому что действительно, переменные среды не были предназначены, чтобы быть механизмом связи межоболочки, и лучше просто найти другой способ сделать это.
Использование процессов сборки программного обеспечения Most make
. Удостоверьтесь, что Вы делаете make
используйте -j
спор с числом обычно о дважды количестве центральных процессоров Вы имеете, таким образом, make -j 8
подходило бы для Вашего случая.
Reniceing группа процесса к-20 является плохой идеей. Этот уровень правильности должен использоваться только критическими по отношению к системе задачами первостепенной важности. Иначе можно освободить скорость отклика или даже заморозить систему. И потенциальная выгода времени компиляции была бы предельной.
Кроме того, что Caleb, уже предложенный при компиляции много, можно также ускорить сборки с помощью кэша компилятора или распределить задачи сборки через несколько компьютеров через сеть с помощью distcc или мороженое.
Добавление к ответу rozcietrzewiacz:
Первое большое улучшение было бы дисками, использовать быстрее диски IOPs, т.е. что-то, что достигает 10,000 или 15 000 об/мин, идеально SSD, и затем Вы только ограничены Вашим кошельком.
Случайный пример, SATA 2 SSD Samsung 6Gbps:
http://www.engadget.com/2011/08/17/samsungs-6gbps-ssd-gets-a-consumer-label-october-ship-date/
OCZ имеют некоторые самые экстремальные аппаратные средства, 500,000 IOPs:
http://www.engadget.com/2011/08/02/oczs-z-drive-r4-pcie-ssd-offers-2-800mb-sec-500-000-iops-pl/
Вы могли попытаться копировать дерево в a tmpfs
файловая система, но кэш файла Linux уже довольно хороша.
Для использования быстрой разработки сборка пошла бы быстрее при отключении всех оптимизаций. Они имеют тенденцию быть тонкими настройками эры 90-х, когда процессоры были медленными, это - в значительной степени все о IO теперь.
Самый замысловатый подход, который я могу вообразить, использует cramfs
сохранить значительную часть дерева, которое не изменяется. Используя сжатую файловую систему означал бы меньше доступов к диску внизу.
-j 6
) примерно зона наилучшего восприятия. Больше на самом деле идет немного быстрее, но машина становится неприемлемо безразличной. Мне нравится мочь все еще ввести, в то время как что-то идет на :) – Caleb 25.08.2011, 23:28