Допустимые значения для LC_CTYPE?

С вершины~/.profile:

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

Итак, (если вы используете bashв качестве оболочки ), я предполагаю, что в вашей системе установлен либо ~/.bash_profile, либо ~/.bash_login. Выберите один и отредактируйте его, чтобы включить:

export PATH=$PATH:$HOME/bin

Затем сохраните и source ~/.bash_loginили выйдите из системы и войдите снова.

Редактировать:

Вы говорите, что оба ~/.bash_profileи ~/.bash_loginотсутствуют в вашем $HOME. Я думаю, нам нужно подтвердить несколько вещей. Пожалуйста, опубликуйте результаты следующего в исходном вопросе:

echo $0
echo $HOME
whoami
less /etc/*-release

Редактировать 2:

Лично я не знаю, почему ~/.profileне включен в ваше дело на основании предоставленной информации и документации. Во время тестирования я заметил, что мой ~/.profileсканируется, когда я sshвхожу, но не когда я запускаю новый терминал.

Но есть простое решение, позволяющее включить $HOME/binв вашу интерактивную оболочку. Отредактируйте (создайте, если нет)~/.bashrcи добавьте к нему следующую строку:

export PATH=$PATH:$HOME/bin

Сохранить, выйти и снова войти или source ~/.bashrc.

Строка exportможет быть расширена для проверки существования $HOME/bin, если хотите, с помощью:

if [ -d "$HOME/bin" ]
then
    export PATH=$PATH:$HOME/bin
fi

Почему ~/.bashrcвместо другого файла? Лично предпочтение и кажется более надежным тоже.

3
26.02.2019, 13:09
1 ответ

Я не стал вдаваться в подробности того, кто «прав, а кто виноват» -, но в равной степени был раздражен этим вопросом. Некоторые решения этого:

  • Сервер -сторона :
    • изменить/отключить AcceptEnv LC_*в /etc/ssh/sshd
      • минусы :он устанавливает их в систему -по умолчанию
    • редактировать .profile
      • минусы :однопользовательский
    • редактировать /etc/bash*или /etc/profile
      • минусы :могут быть изменены в обновлениях
  • Сторона клиента -:
    • alias ssh="LC_CTYPE=\"${LANG}\" ssh"в .bashrc/ .profile/ везде
      • минусы :однопользовательский
    • то же, что и на стороне сервера -в .bashrc/ .profile...
    • изменить/добавить настройки в Терминале
      • con :весь сеанс, локальный или удаленный

Итак, в конце концов я создал mac-locale-fix.shв /etc/profile.dна сервере (raspian в моем случае )с этой строкой:

[ "A${LC_CTYPE}" == "AUTF-8" ] && export LC_CTYPE="${LANG}"

Надеюсь, это поможет другим...

3
03.02.2021, 09:15

Теги

Похожие вопросы