Простой ответ с помощью 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, в то время как переменная оболочки будет продолжать изменяться, показывая последнюю выполненную команду.