Почему не может я загрузочные модули при выполнении моего сценария удара, но только при определении источника его?

Существует хорошее небольшое учебное руководство в этом местоположении: http://atlas.evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt?h=bcache-dev (любил с основного веб-сайта BCACHE).

Смотрите на Getting Started и ATTACHING разделы. Если что-то конкретно не ясно, необходимо обновить вопрос, и мы могли бы возможно помочь еще немного.

12
08.04.2015, 01:44
2 ответа

, поскольку модуль команда псевдонима или оболочки (см. « инициализация пакета » в Модуль (1) ). Когда вы говорите источник runit.sh , это как вводить команду module непосредственно в вашу интерактивную оболочку. Но когда вы говорите ./ Runit.sh , вы используете новую, не интерактивную оболочку. Неинтерактивные снаряды Как правило, не имеют стандартных псевдонимов и функций оболочки.

модуль (1) говорит, «Пакет модулей и модуль команда инициализированы Когда скрипт инициализации, специфичный оболочкой, получен в оболочку. Сценарий создает модуль команда , либо как функция псевдонима или оболочки, ... » Если вам нужно запустить команду модуль в скрипте, Найдите скрипт инициализации, который определяет модуль и источник его из скрипта.

13
27.01.2020, 19:55

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

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

О Различия между к источнику скрипта и выполнения его Вы можете прочитать на Superuser SEP 2009 или DECA 2009 , Ubuntu Feb 2011 , Unix Авг 2011 , Stackoverflow Дек 2012 г. или во многих других местах.

В этом отношении в разделе Modulefiles В предупреждение :

:

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

Так кажется более мудрым выполнить его в скрипте .

Для достижения последнего я могу подумать:

  1. использовать интерактивную оболочку , пренебрегая конкретной историей нынешней оболочки, изменяя Shebang вашего скрипта с

     #! / bin / bash -i
     

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

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

     (источник runit.sh)
     
  3. Попробуйте найти текущий псевдоним / функцию модуля с модулем модулем типа , затем измените вследствие вашего скрипта. Примечание. Некоторые переменные окружающей среды не могут быть установлены для модуля .
    Если вы хотите, вы можете найти сценарии инициализации в каталоге $ модулешом / init / .


Комментарий
Как запомнено в Q & A модулей

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

Итак, если вы хотите избежать изменений текущей среды, я думаю, что лучше попытаться изменить Shebang (1) или исходный сценарий в подпункте (2). Я не совсем уверен в удобствах использования случая (3).


Примечание
Выдержки из ручного и описания страниц модуля модуля

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

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

4
27.01.2020, 19:55

Теги

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