cshell> env 
...
_=/usr/bin/kdeinit

Я подозреваю, что эта переменная замедляет запуск vim. Теперь я должен запустить 'vim -X', иначе для запуска vim требуется 6 секунд.

Я не могу Google, потому что большинство ответов, связанных с "env var underscore", объясняют "$ _", а это не то, что я хочу.

1 ответ1

1

Простой ответ с помощью csh

Если вы беспокоитесь только о C Shell, это легко. Это командная строка последней выполненной команды. См. Подстановка переменных в документации tcsh

Простой ответ с Bash

В Bash документация в главе Специальные параметры говорит нам следующее:

При запуске оболочки задайте абсолютный путь, используемый для вызова оболочки или сценария оболочки, выполняемого в том виде, как он был передан в среде или списке аргументов. Затем расширяется до последнего аргумента предыдущей команды после расширения. Также задайте полный путь, используемый для вызова каждой команды, выполненной и помещенной в среду, экспортированную в эту команду. При проверке почты этот параметр содержит имя почтового файла.

Так что в bash это обычно последний аргумент предыдущей команды. Обычно...

Сложный ответ с bash и csh

В вашем случае программа kdeinit была вызвана из оболочки Bash. Перед выполнением kdeinit полный путь к команде (/usr/bin/kdeinit) был скопирован bash в переменную окружения подчеркивания, как указано ниже. Программное обеспечение kdeinit инициализировало вашу графическую среду, распространяя эту переменную среды на все дочерние процессы. Поэтому ваш терминал C Shell унаследовал эту переменную среды.

Когда вы находитесь в этой C-оболочке, возникает путаница между переменной оболочки $ _ и переменной среды _. В C Shell, когда вы используете конструкцию $ name , она выводит переменную оболочки или переменную окружения, если переменная оболочки не существует. В этом случае они оба существуют и различны. Переменная окружения (как показано командой env) всегда будет напоминать одно и то же значение /usr/bin/kdeinit, в то время как переменная оболочки будет продолжать изменяться, показывая последнюю выполненную команду.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .