当我通过 SSH 进入 Arch Linux 服务器并包含命令行时,我最终得到一个 POSIX 语言环境:
laptop.lan$ ssh server.lan locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
laptop.lan$
据我所知,服务器上的区域设置已正确设置。/etc/locale.conf
如下所示:
LANG=en_US.UTF-8
而且,当我正常使用 SSH 登录时,我的语言环境没有问题:
laptop.lan$ ssh server.lan
server.lan$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
server.lan$
这是怎么回事?我怎样才能让一次性命令也使用我喜欢的语言环境?
答案1
我猜这里应用了一些默认值,我不确定版本,但我的第一想法如下
前进区域设置
SendEnv LANG LC_*
或者
您可以通过编辑远程计算机上的 /etc/ssh/sshd_config 来更改服务器的配置:
接受语言环境
AcceptEnv LANG LC_*
或者
您可以使用 ssh 配置文件将您的语言环境传递给 ~/.ssh/config 并使用
ssh -F ~/.ssh/config your_user@your_host
或者
使用以下方式进行内联更改
LC_TIME="en_US.UTF-8" ssh usernae@yourserver
答案2
fish
我刚刚注意到,当我将(fish-shell) 设置为默认 ( )时,就会出现问题chsh
。当我将 shell 改回 bash 时,语言环境可以正常工作。
所以:
chsh /bin/bash