Re: tmux на локальной машине
>>>>> Artem Chuprina <ran@lasgalen.net> writes:
>>>>> Ivan Shmakov -> debian-russian@ @ Fri, 14 Jul 2017 20:00:32 +0000:
[…]
>>> SSHVARS="SSH_CLIENT SSH_TTY SSH_AUTH_SOCK SSH_CONNECTION DISPLAY"
>>> for x in ${SSHVARS} ; do
>>> (eval echo $x=\$$x) | sed 's/=/="/
>>> s/$/"/
>>> s/^/export /'
>> Bash позволил бы обойтись без eval ("${x}=${!x}"), но, похоже, POSIX
>> такую подстановку не регламентирует.
>> … Однако вполне можно обойтись без Sed:
>> eval echo export "$x"=\\\'\${"$x"//\\\'/\\\'\\\\\\\'\\\'}\\\'
> Ой... Спасибо, я лучше sed. То, что написано у меня, я хотя бы
> прочесть в состоянии...
«Нечитаемая» часть моего варианта относится не к замене Sed, а к
обработке всех возможных имен файлов. Другими словами —
содержащих одинарные кавычки (всюду заменяемые на «'\''»):
$ XYZ=/a\'b\ c\*\'d
$ x=XYZ
$ eval echo export "$x"=\\\'\${"$x"//\\\'/\\\'\\\\\\\'\\\'}\\\'
export XYZ='/a'\''b c*'\''d'
$
Если этого не требуется — убираем подстановку с заменой
${(имя)//(шаблон)/(замена)}:
eval echo export "$x"=\\\'\$"$x"\\\'
Или же (по вкусу):
eval echo export "$x=\\'\$$x\\'"
Cf. исходный eval:
eval echo $x=\$$x
--
FSF associate member #7257 58F8 0F47 53F5 2EB2 F6A5 8916 3013 B6A0 230E 334A
Reply to: