Кто-нибудь может объяснить это странное поведение расширения переменной с помощью cmd.exe с помощью gzip?

#gzip #cmd

#gzip #cmd

Вопрос:

Я сталкиваюсь со следующей проблемой с gzip.exe будь то из UnxUtils или из GnuWin32:

 set gzip=.utilgzip.exe
%gzip% test.txt
%gzip% test2.txt
  

Вторая команда gzip выдаст предупреждение, подобное следующему:

gzip: .utilgzip.exe.gz уже существует; вы хотите перезаписать (y или n)?

Итак: gzip пытается сжать себя (и он все еще сжимается test2.txt ). Это похоже на то, как если бы командная строка была: .util.gzip.exe .util.gzip.exe test2.txt .

Однако, когда в моем пакете моя переменная не называется gzip, тогда она работает правильно.

 set gzip_prg=.utilgzip.exe
%gzip_prg% test.txt
%gzip_prg% test2.txt
  

Я вообще не понимаю, как выбор имени переменной может повлиять на командную строку, которая запускается после расширения.

Короче говоря, мой пакетный скрипт ведет себя по-другому, когда я меняю имя переменной!

У кого-нибудь есть объяснение этому явлению?

Комментарии:

1. Проблема с переменной gzip с тем же именем, что и у команды? Сообщение gzip.exe.gz already exists очень тревожное. Вы не просите gzip сжать себя??

2. @pavium: отредактированный вопрос. gzip не должен пытаться сжать себя, однако это происходит.

Ответ №1:

Я сам нашел ответ.

gzip.exe считывает GZIP переменную окружения, которая помогает устанавливать параметры.

Здесь gzip считывает переменную среды и поэтому считает, что она должна сжаться сама.