Если у вас есть GNUgrep
(по умолчанию в Linux ), вы можете сделать:
grep -Po '(^|\s)\S{64}(\s|$)' file
-P
включает Perl-совместимые регулярные выражения, которые дают нам\b
(слова -границы)\S
(не -пробелы )и{N}
(находят ровно N символов ), а -o
означает «печатать только совпадающую часть строки. Затем мы ищем участки не -пробела длиной ровно 64 символа, которые находятся либо в начале строки (^
), либо после пробела('s
)и которые заканчиваются либо в конце строки ($
), либо другим пробельным символом.
Обратите внимание, что результат будет включать любые пробельные символы в начале и в конце строки, поэтому, если вы хотите продолжить синтаксический анализ, вы можете использовать это вместо этого:
grep -Po '(^|\s)\K\S{64}(?=\s|$)'
Это будет искать пробельный символ или начало строки (\s|^)
, затем отбрасывать его \K
и затем искать 64 не -пробельных символа, за которыми следует ((?=foo)
называется " lookahead " и не будет включаться в соответствие )ни символа пробела, ни конца строки.
В /etc/security/pam_env.conf
добавить:
SSH_AUTH_SOCK DEFAULT=${XDG_RUNTIME_DIR}/ssh-agent.socket
Почему /etc/environment
изначально не работало?:
/etc/environment
следует формату, отличному от ~/.pam_environment
или /etc/security/pam_env.conf
, , как описано здесь:
/etc/environment
:
VARIABLE=value
~/.pam_environment
и/etc/security/pam_env.conf
:
VARIABLE [DEFAULT=value] [OVERRIDE=value]
Значит, я просто не в том формате.
Зачем использовать /etc/security/pam_env.conf
вместо двух других?:
Потому что это был единственный вариант, который полностью работал сейчас и будет работать в будущем.
/etc/environment
не считывает переменные окружения, поэтому ${XDG_RUNTIME_DIR}
не работает. Вы можете жестко запрограммировать содержимое $XDG_RUNTIME_DIR
, но переменная (и ее каталог )устанавливаютсяpam_systemd
динамически для каждого -пользователя. Таким образом, это не лучший вариант.
~/.pam_environment
успешно выполнит ту же задачу, что и /etc/security/pam_env.conf
, но она «устарела и будет удалена в какой-то момент в будущем»(commit). Поэтому для будущей проверки -его не следует использовать.
Таким образом, остается /etc/security/pam_env.conf
. Теперь он работает с ${XDG_RUNTIME_DIR}
и не устарел.
В моей системе /usr/bin/code
не что иное, как сценарий оболочки. Вы можете изменить его, добавив дополнительные операторы экспорта или вызвать его из другого скрипта, сначала экспортируя необходимые переменные env. Например:
#!/bin/zsh
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
/usr/bin/code #path to your executable for VSCode
Если мы обсуждаем X11 в среде Linux -, глобальные настройки среды для сеанса X11 можно установить в /etc/X11/Xsession
или лучше в файле, помещенном в каталог /etc/X11/Xsession.d
.
Для пользовательских настроек используйте $HOME/.xsession
или альтернативу $HOME/.Xsession
, $HOME/.xsessionrc
.
Использование этих файлов включено в main/etc/X11/Xsession
(по крайней мере, в моей системе Debian ).