Это обновляется как и когда процесс получает/удаляет свои переменные среды. У Вас есть ссылка, которая указывает environ
файл не обновляется для процесса в его рабочем каталоге под/proc файловой системой?
xargs --null --max-args=1 echo < /proc/self/environ
или
xargs --null --max-args=1 echo < /proc/<pid>/environ
или
ps e -p <pid>
Вышеупомянутое распечатает переменные среды процесса в ps
выходной формат, относящийся к обработке текстов (парсинг/фильтрация), требуется, чтобы рассматривать переменные среды как список.
Солярис (не спрошенный, но для ссылки я отправлю здесь):
/usr/ucb/ps -wwwe <pid>
или
pargs -e <pid>
Править:/proc/pid/environ не обновляется! Я признаю ошибку. Процесс проверки ниже. Однако дети, от которых процесс fork'd, наследовали переменную среды процесса, и это видимо в их соответствующем/proc/self/environ файле. (Используйте строки),
С в оболочке: здесь xargs является дочерним процессом и следовательно наследовал переменную среды и также отражается в /proc/self/environ
файл.
[centos@centos t]$ printenv | grep MASK
[centos@centos t]$ export MASK=NIKHIL
[centos@centos t]$ printenv | grep MASK
MASK=NIKHIL
[centos@centos t]$ xargs --null --max-args=1 echo < /proc/self/environ | grep MASK
MASK=NIKHIL
[centos@centos t]$ unset MASK
[centos@centos t]$ printenv | grep MASK
[centos@centos t]$ xargs --null --max-args=1 echo < /proc/self/environ | grep MASK
[centos@centos t]$
Проверка его от другой сессии, где терминал/сессия не является дочерним процессом оболочки, где переменная среды установлена.
Проверка от другого терминала/сессии на том же хосте:
terminal1:: Обратите внимание, что printenv является fork'd и является дочерним процессом удара, и следовательно он читает, его собственные окружают файл.
[centos@centos t]$ echo $$
2610
[centos@centos t]$ export SPIDEY=NIKHIL
[centos@centos t]$ printenv | grep SPIDEY
SPIDEY=NIKHIL
[centos@centos t]$
terminal2: на том же хосте - не запускают его с в той же оболочке, где вышеупомянутая переменная была установлена, запустите терминал отдельно.
[centos@centos ~]$ echo $$
4436
[centos@centos ~]$ xargs --null --max-args=1 echo < /proc/self/environ | grep -i spidey
[centos@centos ~]$ strings -f /proc/2610/environ | grep -i spidey
[centos@centos ~]$ xargs --null --max-args=1 echo < /proc/2610/environ | grep -i spidey
[centos@centos ~]$
tr
может сделать это:
tr -d \" < infile > outfile
Вы могли также использовать sed
:
sed 's/"//g' < infile > outfile
Другая версия команды sed :
sed -i s/\"//g file.txt
sed
с поток ред итор
-i
i n -поместить (отредактировать файл на место)s
команду с заменить /replacement_from_reg_exp/replacement_to_text/
заявление \"
кавычки, которым предшествует обратная косая черта(замена _из _reg _exp)g
g lobal (для замены всех вхождений в строке)file.txt
имя файла
< infile > outfile
? По моему скромному мнению, это было более информативно. – Ivan 14.12.2012, 11:27<
прежде пару раз (для импорта сценариев SQL в MySQL и SQLite) было бы сразу очевидно для меня, что я должен использовать<
в этом случае. Я думаю, что было бы лучше возвратить полный пример командной строки назад для дальнейшей ссылки тех, кому, возможно, понадобится он. – Ivan 14.12.2012, 11:35< infile > outfile
, надежда это в порядке. – donothingsuccessfully 14.12.2012, 13:22