Мой синтаксический анализатор псевдонима работает над командной строкой, но не из сценария

Я также испытал трудные катастрофические отказы при наличии хорошего объема активности диска и в VM и в "собственной" системе. Система была рок-стабильна если не использование VM, даже под большими нагрузками. Я попробовал новые версии ядра и новые версии VirtualBox, но сохраненную проблему. Затем я переключился на более новый компьютер (i7), который не имел той же проблемы. Однако компьютер с проблемами ухудшился и начал отказывать в других ситуациях также. Теперь это даже не загружается, но замораживается в то время как на этапе BIOS процесса начальной загрузки. Это может быть аппаратная проблема и/или проблемы с VM-инструкциями относительно ЦП.

Вы могли попытаться ограничить IO и/или количество центральных процессоров, используемых от VM, и видеть, помогает ли это.

2
02.06.2011, 01:06
2 ответа

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

Если все Ваши псевдонимы находятся в общем месте, как ~/.bashrc, Вы могли получить тот файл в свой сценарий сначала:

. $HOME/.bashrc

Затем Вы имели бы, в контексте выполнения того сценария оболочки, всех псевдонимах определенный в .bashrc файл.

Если Ваши псевдонимы определяются повсеместно, нет никакого простого способа консолидировать их. Необходимо было бы записать этот, "сохраняют все мои псевдонимы" как функцию вместо этого. Вы могли вставить что-то вроде этого Ваш ~/.bash_profile, например:

function dumpalias {
    alias -p | sed 's/alias -=/alias -- -=/' > ~/.bash_aliases
}

Затем после того, чтобы выходить из системы и въезжают задним ходом, можно сказать dumpalias для получения поведения, Вы хотите.

3
27.01.2020, 22:07
  • 1
    Спасибо. Я не понял, что псевдонимы не были наследованы. Это работает отлично функцией. –  Wolf 01.06.2011, 23:58
  • 2
    Вы не должны выходить и заходить, просто source или . Ваш .bash_profile –  glenn jackman 02.06.2011, 02:59
  • 3
    Конечно, Вы не делаете. Я рекомендовал это только потому, что .bash_profile часто содержит вещи как PATH расширения, которые лучше всего сделаны однажды на сессию только. –  Warren Young 02.06.2011, 10:52

Когда Вы помещаете его в сценарий и выполняете его, Вы запускаете новую оболочку, которая не наследовала псевдонимы от Вашей текущей оболочки. Так, сценарий сохраняет псевдонимы оболочки; просто нет никаких псевдонимов, определенных в оболочке, где те команды выполняются.

Можно получить сценарий для выполнения его в текущей оболочке:

. /path/to/script

Или, Вы могли записать это как функцию оболочки.

0
27.01.2020, 22:07

Теги

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