Подсказку можно найти в символах в правом верхнем углу, которые находятся в конце строк. Консоль Linux имеет частичную поддержку экранов рисования линий VT100 (включение/выключение).Если ваша локаль не установлена должным образом (заставляя vim путаться в том, какие байты содержат допустимые символы), и, например, если вы отправили какой-то двоичный файл на терминал (и оставили его в режиме набора альтернативных символов...), у вас может быть такое странное поведение.
Предполагая, что переменная среды терминала установлена правильно, например,
export TERM=linux
команда reset
должна решить проблему альтернативного набора символов (но не поможет с локалью или фактической кодировкой терминала).
Какую бы проблему вы ни пытались решить, вы можете попробовать, если
/proc/self
решит ее. Вместо того, чтобы получать начальную среду оболочки,
cat /proc/self/environ
отображает среду команды cat
, которая должна быть равна текущей среде оболочки, в которой она выполняется.
Вы должны прочитать комментарии под вводящим в заблуждение ответом.
/proc/$PID/environ
не используется оболочкой. Он просто представляет начальную среду процесса при его запуске.
Все, что делается в оболочке, включая сценарии инициализации, может изменять эти значения внутри оболочки без изменения записи proc
, на которую вы смотрите.
/proc/7791/environ
показывает исходную среду оболочки, как она была получена процессом при его запуске с помощью системного вызова execve:
int execve(const char *filename, char *const argv[], char *const envp[]);
Когда оболочка работает, он может изменить свой набор экспортируемых переменных, например, вычислив .bashrc
. Затем этот новый набор передается в векторе envp
при запуске программы env
.