глобальная Linux-оболочка linux в переменной памяти – из оболочки

Есть ли способ установить переменную env без редактирования файлов, которые будут находиться в памяти, а также повлиять на другие оболочки, которые вступят в силу для любого нового пользователя, который подключает этот компьютер и вступит в силу только после следующей перезагрузки Linux-машины?

Я пытаюсь вспомнить что-то в своем linux, которое будет эффективным (из сценария) только на время, когда машина вверх (я не хочу файл по этой причине), поэтому из моей оболочки я хочу установить некоторый флаг, который будет действительным для любого пользователя, подключающегося как:

linux_test_run=yes 

однако я хочу, чтобы он был эффективным для любой новой оболочки, открытой на этом Linux. и я хочу, чтобы в следующий раз кто-то перезагрузит эту машину, эта переменная исчезнет …

Любой (простой) для меня, чтобы достичь этого? (без использования файлов …)

  • Какие сценарии bash выполняются при запуске терминала?
  • Как найти библиотеки, которые эта программа нуждается в переменной окружения?
  • Msgstr "недействительный идентификатор", когда я делаю "экспорт $ PATH"
  • Связь между процессами запуска оболочки и средой родительского процесса
  • получить переменную окружения по имени переменной?
  • Последняя неудачная команда в bash
  • Как настроить среду для es?
  • Выдать ошибку при использовании пустых переменных оболочки
  • 4 Solutions collect form web for “глобальная Linux-оболочка linux в переменной памяти – из оболочки”

    Ну, файлы в /tmp обычно очищаются при перезагрузке, поэтому почему бы нет источника какого-либо скрипта там файла, что-то вроде строк «если этот файл существует, его источник»? Затем вы можете сделать свою инициализацию в этом файле по мере необходимости. Это может быть помещено в некоторый файл инициализации bash, полученный из входа в оболочку, например, /etc/profile . (Предполагается, что вы хотите, чтобы она была получена из интерактивных оболочек, а не из оконных оболочек).

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

    Вы можете использовать export чтобы пометить переменную, которая будет передана дочерним процессам в среде.

     export linux_test_run=yes 

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

    Извините, вам придется где-то редактировать файл запуска, и если вы хотите его для всех пользователей, возможно, bashrc в /etc

    Однако, если единственная причина, по которой вы не хотите использовать файлы, – это то, что вы хотите, чтобы это поведение исчезло при перезагрузке, есть и другие способы сделать это:

    1. Вызовите файл setvariable.bash из bashrc . Внутри этого файла вы экспортируете переменную
    2. Поместите файл в /etc/init.d который будет запущен при перезагрузке и дезактивирует файл setvariable.bash (заменяя его пустым файлом или чем-то еще)

    Это взломать, но это может сработать.

    Большинство методов регистрации читают переменные среды из /etc/profile . (Могут быть другие возможности, но это проще всего действовать.) Итак, если я правильно вас понимаю, вы хотите добавить назначение переменной среды в /etc/profile при следующей перезагрузке и удалить ее при перезагрузке после что.

    Во-первых, если у вас этого нет (некоторые дистрибутивы настроили его), создайте каталог /etc/profile.d и добавьте этот фрагмент в /etc/profile :

     for x in /etc/profile.d/*.sh; do . "$x" done unset x 

    Создайте файл, содержащий export linux_test_run=yes называется /etc/profile.d/test_run.sh.0 .

    Добавьте следующий фрагмент в /etc/rc.local (или какой-либо другой скрипт, который выполняется во время загрузки):

     for x in /etc/profile.d/*.sh.[0-9]*; do n=${x##*.} # extract the part after the last . case n in *[!0-9]*) continue;; # n is not a number, so skip this file *[1-9]*) mv "$x" "${x%.*}.$(($n-1))";; # decrement the number in the file name *) # the file is *.sh.0, so rename to .sh and schedule for deletion echo "${x%.*}" >>/etc/profile.d/cancel-on-reboot.list mv "$x" "${x%.*}";; esac done if [ -e /etc/profile.d/cancel-on-reboot.list ]; then # rename all files in this list so they won't be considered any longer while read -rx; do mv "$x" "$x.cancelled" done </etc/profile.d/cancel-on-reboot.list rm /etc/profile.d/cancel-on-reboot.list fi 

    Если вы хотите повторно установить параметр для одной перезагрузки, переименуйте его в *.sh.0 .

    Interesting Posts

    Как поговорить с geoclue через его интерфейс dbus?

    Это хорошая идея для загрузки утилит Linux по умолчанию?

    Редактируйте несколько строк из определенного раздела INI-файла

    Установите 32-битные библиотечные пакеты на 64-разрядную версию 6.2 во время установки os

    Изменение поворота экрана в GNOME / Wayland

    Должен ли я развертываться с тем же пользователем, который запускает веб-сайт?

    Не удалось запустить Firefox: продолжает сбой

    Модернизация Wheezy -> Jessie Не удалось установить procps

    Нужна помощь в понимании того, что означают «каналы», «buffer_size», «period_size», «привязки» и «ipc_key» в .asoundrc

    Если мне нужно воссоздать ключи хоста SSH с помощью ssh-keygen, как я могу изменить выходной каталог? (-f переключатель, похоже, не работает)

    Как узнать, какие процессы были запущены?

    Возможно ли установить GRUB с установочного диска Debian, чтобы также поддерживать существующую установку WinXp / Win8.1?

    Установка определенных PPA

    libcrypto.so.10: невозможно открыть файл общих объектов: нет такого файла или каталога

    Доступ к серверу через два разных маршрутизатора Wi-Fi

    Linux и Unix - лучшая ОС в мире.