Набор переменной среды XAUTHORITY неоднократно на каждом входе в систему

Я не думаю, что любая оболочка делает что-либо вне пробельной порчи при хранении команд в историю. Что * расширенный до не зарегистрирован и там, кажется, не опция записать его.

Обратите внимание, что не было бы возможно записать в полной общности так или иначе. Например, если Вы работаете a='foo* bar*'; rm $a (rm $=~a в zsh), оболочка вряд ли обнаружит подстановочное соответствие синтаксически. И нет никакой опции зарегистрировать все расширения шарика.

Вы могли мостить что-то вместе с preexec (или эквивалентный удар). Непротестированный сначала идут (для zsh):

history_wildcards=()
precmd () {
  emulate -LR zsh
  local n tmp
  history -1 | read n tmp
  history_wildcards[$(($n+1))]=$=~1
}

Это заполняется history_wildcards выстройте к строке с расширением шарика каждого слова в командной строке. Разделение Word выполняется наивным способом, таким образом, что-то как echo ' /**/* ' расширится /**/* (т.е. пересеките свой диск). Не ожидайте ничего полезного из cd subdir && echo * или что-либо так возражает-bogglingly нетривиальный.

Если Вы планируете заранее, можно заставить zsh развернуть подстановочные знаки перед представлением команды. В конфигурации по умолчанию просто нажмите Tab, когда Ваш курсор будет на шарике. При конфигурировании завершения по-другому попробовать ^X * (expand-word).

6
05.03.2018, 14:13
2 ответа

Долго отступайте, я задал тот же вопрос. Кто экспортирует / этот переменный набор в их среде процесса. К счастью, мне преподавали иметь сценарий оболочки. Это работает над Солярисом. На Linux это могло мало отличаться для парсинга родительской среды процесса.

Я мог даже дать Вам разговор, который я имел затем: https://groups.google.com/group/comp.unix.shell/browse_thread/thread/a91bf497add5544e/56dd2f64c4029734? hl=en&ie=UTF-8&q=mnikhil+who+exported+this+variable&pli=1#56dd2f64c4029734

envtrace(){ 
ptree $$ | 
while read pid prog 
do 
  /usr/ucb/ps eww $pid 
done | 
sed -n ' 
s/^ *// 
/^[^0-9]/d 
h 
s/ .*/:/p 
g 
s/^.* \('"$1"'=[^ ]*\).*/\1/p 
g 
/^'"$$"' /q' 
} 

envtrace СОЕДИНЯЮТ envtrace каналом OSTYPE

0
27.01.2020, 20:30
  • 1
    На Linux: grep -lsz '^AUTHORITY=' /proc/[0-9]*/environ | cut -d / -f 3 –  Gilles 'SO- stop being evil' 07.12.2011, 03:00
  • 2
    я полагаю, что Ваша команда выше дает мне pid процесса, который изменился / обновил переменную среды XAUTHROTIY. Мог быть помогают мне с логикой позади этого вида использования. Кажется удобной командой. –  user1039494 07.12.2011, 07:22

Если Вы используете su для входа в систему как корень затем это происходит, вероятно, из-за использования pam_xauth настраивать новый xauthority файл для той сессии, как описано в этом старом почтовом потоке.

1
27.01.2020, 20:30

Теги

Похожие вопросы