Я экспортировал новую пользовательскую переменную SSLKEYLOGFILE с помощью команды:
export SSLKEYLOGFILE=($HOME)/sslkeylog.log
Если я обычно открываю Firefox или Chrome, файл sslkeylog.log не создается (даже если он создан, его пустой, даже если я просматривать через ssl-трафик через браузер). Есть ли специальная команда терминала для открытия браузеров с включенными функциями? Если да, то что?
Если вы выполнили export (без параметров) после вашей команды, вы увидите, что для параметра SSLKEYLOGFILE установлено значение (/home/username)/sslkeylog.log, что не является допустимым путем. Опустить круглые скобки:
export SSLKEYLOGFILE=$HOME/sslkeylog.log
В соответствии с Справочным руководством Bash:
export [-fn] [-p] [name[=value]]
Mark each name to be passed to child processes in the
environment.[...]
... и аналогичным образом Bash Reference Manual :
export name ...
export -p
The specified names are exported so that they will appear in the
environment of subsequent commands.[...]
... переменная экспортируемой среды только когда-либо передавались последующим командам в одном процессе или дочерних процессах. Поэтому, если вы открываете терминал и выполняете команду export SSLKEYLOGFILE..., только переменные среды, которые генерируются из одного и того же терминала (или, точнее, одного и того же процесса оболочки в этом терминале), будут отображать только приложения (процессы). Если вы запустите google-chrome(-stable) с этого терминала, он увидит переменную SSLKEYLOGFILE и напишет в указанный файл.
Если вы откроете google chrome с этого терминала (который я предположим, что вы считаете нормальным), он не будет дочерним процессом терминала и, следовательно, не будет знать о переменной SSLKEYLOGFILE.
Также имейте в виду, что если chrome уже запущен, выполняется google-chrome-stable в терминале откроет новое окно в уже запущенном процессе. Вы можете просмотреть дерево процессов, выполнив pstree в терминале.
Поскольку это не было частью вопроса, я не буду вдаваться в подробности здесь, но устанавливаю постоянные переменные среды, широкий или общесистемный, объясняется в вики сообщества Ubuntu
Если вы выполнили export (без параметров) после вашей команды, вы увидите, что для параметра SSLKEYLOGFILE установлено значение (/home/username)/sslkeylog.log, что не является допустимым путем. Опустить круглые скобки:
export SSLKEYLOGFILE=$HOME/sslkeylog.log
В соответствии с Справочным руководством Bash:
export [-fn] [-p] [name[=value]]
Mark each name to be passed to child processes in the
environment.[...]
... и аналогичным образом Bash Reference Manual :
export name ...
export -p
The specified names are exported so that they will appear in the
environment of subsequent commands.[...]
... переменная экспортируемой среды только когда-либо передавались последующим командам в одном процессе или дочерних процессах. Поэтому, если вы открываете терминал и выполняете команду export SSLKEYLOGFILE..., только переменные среды, которые генерируются из одного и того же терминала (или, точнее, одного и того же процесса оболочки в этом терминале), будут отображать только приложения (процессы). Если вы запустите google-chrome(-stable) с этого терминала, он увидит переменную SSLKEYLOGFILE и напишет в указанный файл.
Если вы откроете google chrome с этого терминала (который я предположим, что вы считаете нормальным), он не будет дочерним процессом терминала и, следовательно, не будет знать о переменной SSLKEYLOGFILE.
Также имейте в виду, что если chrome уже запущен, выполняется google-chrome-stable в терминале откроет новое окно в уже запущенном процессе. Вы можете просмотреть дерево процессов, выполнив pstree в терминале.
Поскольку это не было частью вопроса, я не буду вдаваться в подробности здесь, но устанавливаю постоянные переменные среды, широкий или общесистемный, объясняется в вики сообщества Ubuntu