Хранение всех переменных среды в одном файле

Вы правы. Чтобы получить правильный ответ, я изменил ваш код до рабочего (по крайней мере, под Ubuntu 15. 10, Unify):

#!/usr/bin/env python
import gobject
import dbus
from dbus.mainloop.glib import DBusGMainLoop

def filter_cb(bus, message):
if message.get_member() != "EventEmitted":
    return
args = message.get_args_list()
if args[0] == "desktop-lock":
    print("Lock Screen")
elif args[0] == "desktop-unlock":
    print("Unlock Screen")

DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_match_string("type='signal',interface='com.ubuntu.Upstart0_6'")
bus.add_message_filter(filter_cb)
mainloop = gobject.MainLoop()
mainloop.run()
1
18.07.2018, 01:21
2 ответа

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

Это не проблема, если вы не добавляете / значения в начале к переменным среды.

Вы можете защититься от этого, установив переменную оболочки, например env_sourced, в какое-то значение в файле, а затем протестировав его вверху:

# My environment file

[ -n "$env_sourced" ] && return
env_sourced=1

PATH="$PATH:/some/path"
# etc.
0
28.01.2020, 00:32

Я не понимаю, почему вы не должны этого делать. Например, я работаю в смешанной среде bash/zsh (, т.е. я использую в некоторых окнах терминала bash, а в некоторых — zsh ). Я поместил эти определения -переменных среды, не -экспортируемых переменных, функций оболочки -, которые синтаксически совместимы для обоих языков, в один общий файл, который я беру из.bashrc и.zshrc.

0
28.01.2020, 00:32

Теги

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