scp タブ完了エラー: F-bash: 警告: setlocale: LC_CTYPE: ロケールを変更できません (en_US.UTF-8)

1. 問題の説明

特定の Linux 操作中に、function scp コマンドが使用され、Tab を使用して次のディレクトリを完了できませんでした。エラーが報告されました: -bash: warning: setlocale: LC_CTYPE: ロケールを変更できません (en_US.UTF-8): Noそのようなファイルまたはディレクトリ

ここに画像の説明を挿入します
関連リンク:文字マップ ファイル `UTF-8' が見つかりません

2.原因処理

1) 上に示したように、Linux 文字セットに問題があるというプロンプトが表示されます。

2) 以下に示すように、locale -a の実行を確認し、システムにインストールされている文字エンコーディングを確認します。 en_US.UTF-8 はありません。

ここに画像の説明を挿入します

localectl status    #检查当前设定

System Locale: LANG=en_US.UTF-8
VC Keymap: cn
X11 Layout: cn

ls /usr/lib/locale/    #查看当前的雨具路径,显示也没有英文
C.utf8         zh_CN.gbk   zh_HK.utf8  zh_SG.utf8   zh_TW.utf8
zh_CN          zh_CN.utf8  zh_SG       zh_TW
zh_CN.gb18030  zh_HK       zh_SG.gbk   zh_TW.euctw

3) 実行: find / -name locale*

/etc/locale.conf
/usr/include/c++/8/bits/locale_facets_nonio.h
/usr/include/c++/8/bits/locale_classes.h
/usr/include/c++/8/bits/locale_facets_nonio.tcc
/usr/include/c++/8/bits/locale_facets.h
/usr/include/c++/8/bits/localefwd.h
/usr/include/c++/8/bits/locale_classes.tcc
/usr/include/c++/8/bits/locale_facets.tcc
/usr/include/c++/8/bits/locale_conv.h
/usr/include/c++/8/locale
/usr/include/bits/types/locale_t.h
/usr/include/bits/locale.h
/usr/include/locale.h
/usr/bin/localectl
/usr/bin/localedef
/usr/bin/locale
/usr/lib64/python3.6/locale.py
/usr/lib64/python3.6/__pycache__/locale.cpython-36.opt-1.pyc
/usr/lib64/python3.6/__pycache__/locale.cpython-36.opt-2.pyc
/usr/lib64/python3.6/__pycache__/locale.cpython-36.pyc
/usr/lib/locale
/usr/share/perl5/locale.pm
/usr/share/X11/locale
/usr/share/X11/locale/locale.alias
/usr/share/X11/locale/locale.dir
/usr/share/man/man7/locale.7.gz
/usr/share/man/man1p/localedef.1p.gz
/usr/share/man/man1p/locale.1p.gz
/usr/share/man/man3p/localeconv.3p.gz
/usr/share/man/man0p/locale.h.0p.gz
/usr/share/man/man1/locale.1.gz
/usr/share/man/man1/localectl.1.gz
/usr/share/man/man1/localedef.1.gz
/usr/share/man/man3/locale.3pm.gz
/usr/share/man/man3/localeconv.3.gz
/usr/share/man/man5/locale.conf.5.gz
/usr/share/man/man5/locale.5.gz
/usr/share/locale
/usr/share/locale/locale.alias
/usr/share/bash-completion/completions/localectl
/usr/share/i18n/locales

4) LANG="zh_CN.UTF-8" を確認して使用し、次のように変更します: en_US.UTF-8

5) 直接実行:export LC_CTYPE=zh_CN.UTF-8 および export LC_ALL=zh_CN.UTF-8、または /etc/profile.d/lang.sh を書き込むと、検証に合格します。
ここに画像の説明を挿入します

localedef -i en_US -f UTF-8 en_US.UTF-8    #现场无效,报错:
[error] ?????????"UTF-8": ?????????
[error] ???????????"ANSI_X3.4-1968": ?????????

echo "export LC_ALL=en_US.UTF8" >> /etc/profile
source /etc/profile

6) その後、以下に示すような同様のエラーが発生しました。
ここに画像の説明を挿入します
実行: yum check-update --security、プロンプトは次のとおりです。現在は C.UTF-8 を使用しています。

Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 4:03:41 ago on Wed Sep 13 03:46:54 2023.
No security updates needed, but 179 updates available

export LC_ALL=en_US.UTF8    #报错如下
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF8): No such file or directory
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF8)

上記のエラーは、システムがデフォルトの地域言語を設定していることを示しています。文字セットは en_US.UTF-8 ですが、対応するロケール ファイルがシステムで定義されていないため、このロケール ファイルを手動で生成する必要があります。埋め込む:

vim /etc/environment         #添加下面两行内容
 LANG="en_US.UTF-8"
 LC_ALL=

source /etc/environment
#收到生产配置文件
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8   #报错如下
failed to set locale!
[error] character map file `UTF-8' not found: No such file or directory
failed to set locale!
[error] default character map file `ANSI_X3.4-1968' not found: No such file or directory

yum install glibc-langpack-zh glibc-locale-source glibc-langpack-en -y
#再次执行:
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8   #输出如下

[warning] LC_NAME: field `name_gen' not defined
[warning] LC_IDENTIFICATION: field `audience' not defined
[warning] LC_IDENTIFICATION: field `application' not defined
[warning] LC_IDENTIFICATION: field `abbreviation' not defined
[verbose] LC_CTYPE: table for class "upper": 2388001817131 bytes
[verbose] LC_CTYPE: table for class "lower": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "alpha": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "digit": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "xdigit": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "space": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "print": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "graph": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "blank": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "cntrl": 18446744069414584898 bytes
[verbose] LC_CTYPE: table for class "punct": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "alnum": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "combining": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for class "combining_level3": 18446744073709551615 bytes
[verbose] LC_CTYPE: table for map "toupper": 0 bytes
[verbose] LC_CTYPE: table for map "tolower": 0 bytes
[verbose] LC_CTYPE: table for map "totitle": 0 bytes
[verbose] LC_CTYPE: table for width: 0 bytes

ログアウトして再度ログインして確認すると、次のようにエラーが報告されなくなります。

ここに画像の説明を挿入します
エクスポート LC_ALL=en_US.UTF8 を実行してもエラーは報告されなくなりました。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/ximenjianxue/article/details/132838358