Ограничения/etc/profile в Gnome

Когда Вы выполняете программу, проверки ядра, запускается ли она некоторой волшебной последовательностью байта. Если исполняемый файл запускается с #!, ядро интерпретирует остальную часть строки как название интерпретатора. Если исполняемый файл запускается с \177ELF (где \177 байт 127), он загружает файл как исполняемый файл ELF; это - нормальный вид в большинстве систем Unix в наше время.

Если ядро не распознает формат файла, оно отказывается выполнять файл и возвращает ошибку ENOEXEC (Исполнительная ошибка формата). Когда оболочка замечает, что, берет себя для выполнения программы как сценария оболочки.

Для наблюдения этого в действии добавьте несколько команд к сценарию:

ps l $$
ls -l /proc/$$/exe
echo hello

(Это для Linux, корректируйтесь для других нельдов.) Затем пытаются запустить тот скрипт от различных оболочек. Вы будете видеть, что некоторые оболочки порождают новые экземпляры себя для выполнения сценария (удар, ksh93), в то время как другие мечут икру /bin/sh (тире, pdksh, zsh).

2
29.10.2013, 17:36
1 ответ

Подтвердите, что MKL_TARGET_ARCH установлен

Когда Вы добавляете это к /etc/profile.d разногласия каталога являются переменной $MKL_TARGET_ARCH не установлен или еще не был установлен, таким образом, все if/else блок по существу пропускается.

Можно протестировать эту теорию путем временной установки $MKL_TARGET_ARCH чуть выше if/else оператор и попытка, входящая в систему снова, чтобы видеть, работало ли это.

MKL_TARGET_ARCH="..something.."
if [ -z "${MKL_TARGET_ARCH}" ] ; then

Установка Intel Compilers

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

В любом случае, когда Вы устанавливаете эти типы инструментов Вы обычно или должны создать Ваш собственный файл среды, или каждому предоставляют. Я нашел это сообщение относительно компилятора Фортрана Intel, но я буду удивлен, ли продукты то, что отличающиеся.

При просмотре этого сообщения, Вы заметите шаг после установки (install.sh), где файл копируется в /etc/profile.d. Этот файл содержит установку среды, которая должна произойти.

cp /opt/intel/Compiler/11.1/056/bin/ia32/iccvars_ia32.sh /etc/profile.d/

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

Возможное решение

если . работы, но source не делает затем, Вы могли бы иметь дело с Оболочкой Bourne и не Bash. Bash поддерживает обоих тогда как Оболочка Bourne (/bin/sh) не делает.

Если Вы взглянули на этот документ затем, Вы видите, что это, кажется, точно, где Вы проблема лежите.

Ubuntu 12.0x изменила ссылку для/bin/sh от/bin/bash до/bin/dash. Сценарии установки Intel для 13.0.0.079 ссылок/bin/sh, НО принимают/требуют, что это - граница или удар (sh или удар), но не совместимо с тире.

1
27.01.2020, 22:22
  • 1
    Для компилятора C++ это несколько отличается. У Вас больше нет архитектурно-зависимых сценариев, Вы указываете архитектуру как аргумент одному полному compilervars.sh который делает задание. Кроме того, я не хочу копировать его, потому что, если я просто называю его, я всегда получаю актуальнейшую версию даже после обновления. Наконец, никакой файл не копируется во время установки на /etc/profile.d но Вы получаете сообщение, что необходимо получить переменные сценарии соответственно. Спасибо за Ваш ответ. –  halirutan 29.10.2013, 18:41
  • 2
    @halirutan - Вы могли записать сценарий, который делает определение источника последнего compilervars.sh сценарий, и вставленный в этот сценарий /etc/profile.d, был бы другой пример. –  slm♦ 29.10.2013, 18:49
  • 3
    Это точно, как я делаю это, и это работает теперь как очарование за исключением одной вещи: Где-нибудь после обработки профиля мой LD_LIBRARY_PATH сброшен. Если можно сэкономить минуту и иметь идею, как отладить это, я нахожусь в чате. –  halirutan 29.10.2013, 18:51
  • 4
    @halirutan - Я не могу болтать теперь, но другое предложение состояло бы в том, чтобы добавить a set -x перед командами в этих файлах для включения более подробного сообщения отладки, поскольку они получены. Вы обычно включаете его с set -x и отключите его с set +x. –  slm♦ 29.10.2013, 18:57

Теги

Похожие вопросы