Я не думаю, что любая оболочка делает что-либо вне пробельной порчи при хранении команд в историю. Что *
расширенный до не зарегистрирован и там, кажется, не опция записать его.
Обратите внимание, что не было бы возможно записать в полной общности так или иначе. Например, если Вы работаете 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
).
Долго отступайте, я задал тот же вопрос. Кто экспортирует / этот переменный набор в их среде процесса. К счастью, мне преподавали иметь сценарий оболочки. Это работает над Солярисом. На 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
Если Вы используете su
для входа в систему как корень затем это происходит, вероятно, из-за использования pam_xauth
настраивать новый xauthority файл для той сессии, как описано в этом старом почтовом потоке.
grep -lsz '^AUTHORITY=' /proc/[0-9]*/environ | cut -d / -f 3
– Gilles 'SO- stop being evil' 07.12.2011, 03:00