выполните сценарий удара внутри .bashrc

Если Вы хотите отредактировать источник стандартных пакетов и скомпилировать их сами, необходимо использовать ABS (Система сборки Дуги). Заключенный в кавычки из Дуги Linux Wiki:

Система сборки Дуги, ABS, если коротко, является подобной портам системой для создания и упаковки программного обеспечения от исходного кода. В то время как pacman является специализированным инструментом Arch для двоичного управления пакетом (включая пакеты, созданные с ABS), ABS является набором инструментов для компиляции источника в устанавливаемые .pkg.tar.gz/.pkg.tar.xz пакеты.

Это - рекомендуемый метод при использовании Дуги Linux.

7
08.12.2012, 00:58
4 ответа

Хорошо я выяснил, как сделать это. В .bashrc просто сделайте:

export HELLO_WORLD=$(source bash_script.sh)
2
27.01.2020, 20:17
  • 1
    Нет никакой причины, насколько я могу сказать, чтобы у Вас был он, присваивают результат того сценария к переменной. У Вас могла столь же легко быть строка source bash_script.sh в Вашем .bashrc –  HalosGhost 11.05.2014, 05:38

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


Однако есть способ запустить бесконечный цикл. Каждая оболочка bash , интерактивная или нет, проверяет, установлена ​​ли переменная BASH_ENV , и, если да, использует ее значение в качестве имени исходного файла. В этом случае выполнение сценария bash из этого файла приведет к бесконечному циклу, поэтому его необходимо использовать. Однако на практике этот сценарий (как следует из его названия) просто использовал бы для установки переменных среды для использования оболочкой, а не для выполнения произвольного кода.

3
27.01.2020, 20:17

Поместите это как строку 1:

[ -z "$PS1" ] && return # If not interactive, exit
1
27.01.2020, 20:17

Вам не нужно ничего делать. Простой запуск сценария bash не приведет к вызову вашего .bashrc .

Ваш .bashrc будет вызван только в том случае, если bash является интерактивным. Когда вы запускаете сценарий, он не является интерактивным.

Из справочной страницы bash:

Интерактивная оболочка запускается без аргументов, не являющихся параметрами, и без параметра -c , стандартный ввод и ошибка которого связаны с терминалами (как определение - {{ 1}}, добытый isatty (3)), или запускаемый с параметром -i. PS1 установлен, а $ - включает i, если bash является интерактивным, что позволяет сценарию оболочки или файлу запуска проверить это состояние .

Важным здесь является «запуск без аргументов, не являющихся опциями». Когда вы запускаете сценарий, первым аргументом bash является путь к этому сценарию. Таким образом, он не имеет аргументов и не является интерактивным.

2
27.01.2020, 20:17

Теги

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