cshell> env
...
_=/usr/bin/kdeinit
Я подозреваю, что эта переменная замедляет запуск vim. Теперь я должен запустить 'vim -X', иначе для запуска vim требуется 6 секунд.
Я не могу Google, потому что большинство ответов, связанных с "env var underscore", объясняют "$ _", а это не то, что я хочу.
vim
environment-variables
Яо Джин
источник
источник
$_
это , как вы бы получить доступ к нему ...?_
вenv
PATH
. Я не знаю, почему оболочки имеют тенденцию экспортировать $ _ в окружающую среду, но они делают. Поэтому, когда запускался сценарий оболочки / usr / bin / kdeinit, он экспортировал это.true one two three; echo $_
Ответы:
Простой ответ с помощью 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, в то время как переменная оболочки будет продолжать изменяться, чтобы показать последнюю выполненную команду.
источник