ඔබ වැරදියට වටහාගෙන ඇති එක් දෙයක් /etc/environment
නම් නැවත පූරණය කිරීම සඳහා නැවත පණගැන්වීම අවශ්ය වේ. මෙය වැරදිය. ගොනුව කියවන එකම අවස්ථාව වන්නේ ප්රවේශවීමේදී , PAM තොගය සක්රිය වූ විට - විශේෂයෙන් pam_env.so
, ගොනුව කියවන.
පිටවීම සහ නැවත ඇතුල් වීම වෙනස්කම් වලට අදාළ වේ - ඇත්ත වශයෙන්ම ඔබේ සියලු ක්රියාදාමයන්ට නව පරිසරය ලැබීමට අවශ්ය නම් ඔබ මෙය කළ යුතුය . අනෙක් සියලුම "විසඳුම්" 2 පරිසරය අදාළ කරන්නේ තනි කවච ක්රියාවලියට පමණි, නමුත් ඔබ නව පර්යන්ත කවුළු ඇතුළුව GUI හරහා දියත් කරන කිසිවක් සඳහා නොවේ. 1
නමුත්, ඒ සමඟ ඔයා තමයි දඩ නම් - නොමැති export
විධාන සඳහා වන්දි කළ හැකි set -a
හා set +a
. කෙසේ වෙතත්, ගොනුව උපුටා දැක්වීම භාවිතා නොකරන බැවින් එය තවමත් දුර්වල ක්රමයක් ලෙස පවතී. නමුත් මෙය හොඳින් ක්රියාත්මක විය යුතුය:
while read -r env; do export "$env"; done
1 GNOME Session Manager විසින් තමන්ගේම පරිසරය වෙනස් කිරීමට ක්රමයක් සපයයි, නමුත් Initialization
අදියර තුළ පමණි :
$ gdbus call -e -d org.gnome.SessionManager \
-o /org/gnome/SessionManager \
-m org.gnome.SessionManager.Setenv \
"FOO" "bar"
Error: GDBus.Error:org.gnome.SessionManager.NotInInitialization: Setenv
interface is only available during the Initialization phase
2 gdb
විසඳුමක් නොවේ, නමුත් සමහර විට භාවිතා කළ හැකිය. ඔබ ඔබේ සැසි කළමණාකරු (උදා: ධාවන ක්රියාවලිය එය අනුයුක්ත කිරීමට ඇති gnome-session
,) ඔබේ කවුළු කළමණාකරු (උදා: gnome-shell
හෝ openbox
), ඔබේ කාර්ය තීරුව / පුවරුව නම් (උදා: xfce4-panel
), සහ පොදුවේ හැකි දේවල් ක්රියාත්මක කරන බව දෙයක්. එම සෑම ක්රියාවලියක් සඳහාම, ඔබ gdb
එයට PID මඟින් ඇමිණිය යුතුය, putenv()
භාවිතයෙන් ශ්රිතය p
කැඳවිය යුතුය, පසුව භාවිතයෙන් වෙන් කරන්න q
:
$ sudo gdb -p $(pidof gnome-session)
GNU gdb (GDB) 7.7.1
[...]
Attaching to process 718
[...]
0x00007fc2cefed81d in poll () from /usr/lib/libc.so.6
(gdb) p putenv("FOO=bar")
$1 = 0
(gdb) p putenv("BAZ=qux")
$2 = 0
(gdb) q
A debugging session is active.
Quit anyway? (y or n) y
Detaching from program: /usr/bin/gnome-session, process 718
නිදොස්කරණය මඟින් ක්රියාවලිය නවත්වන බව සලකන්න, එබැවින් ඔබ කවුළු කළමණාකරුවන් සංයුක්ත කිරීමට ඇමිණිය යුත්තේ වෙනත් tty (අතථ්ය කොන්සෝලයකින්) හෝ SSH හරහා පමණි, එසේ නොමැතිනම් තිරය කැටි වනු ඇත.
ඊට අමතරව, ඔබ dbus-deemon භාවිතා කරන පරිසරය ද යාවත්කාලීන කළ යුතුය:
$ dbus-update-activation-environment --systemd FOO=bar BAZ=qux
පැරණි පද්ධති සඳහා:
$ gdbus call -e -d org.freedesktop.DBus \
-o /org/freedesktop/DBus \
-m org.freedesktop.DBus.UpdateActivationEnvironment \
"{'FOO': 'bar', 'BAZ': 'qux'}"
()
for line in $( cat /etc/environment ) ; do export $line ; done
, ගොනු ආකෘතිය නම් ඔබට භාවිතා කළ හැකියkey=value
.