LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1071|回复: 7

问一个Shell变量的问题!谢谢!

[复制链接]
发表于 2010-4-21 19:57:48 | 显示全部楼层 |阅读模式
我的系统默认是英文的,安装了中文包,但是有时候启动一些软件要用中文启动,比如现在我的语言是 en_US.UTF-8
使用 date 命令输出的是
Wed Apr 21 19:53:33 CST 2010
如果输入
     LC_ALL=zh_CN.UTF-8 date 输出的是

2010年 04月 21日 星期三 19:51:29 CST,这样就变成中文了。
但是我在Shell脚本1.sh里写下
#! /bin/bash
LC_ALL=zh_CN.UTF-8 date
运行的时候输出却是英文的,请问如何以脚本的方式实现中文呢?
先谢谢各位了
发表于 2010-4-21 20:36:59 | 显示全部楼层
你怎么执行脚本的?
sh xx.sh
source xx.sh
. xx.sh
还是
./ xx.sh  ??
回复 支持 反对

使用道具 举报

发表于 2010-4-21 20:43:03 | 显示全部楼层
在~/.bashrc中添加
alias date='LC_ALL=zh_CN.UTF-8 date'

立即生效的话
alias date='LC_ALL=zh_CN.UTF-8 date' ; date

如果是在脚本里的话
export LC_ALL='zh_CN.UTF-8' ; date
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-22 17:26:16 | 显示全部楼层
谢谢 U571,这样既不会更改系统的语言,又能用中文运行软件。
回复 支持 反对

使用道具 举报

发表于 2010-4-23 13:21:38 | 显示全部楼层
楼主,您自己方法末错,只是末注意细节。
LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 date

试试这个:
LANG= LC_ALL= locale
LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 locale
也许您还想再加一个 "LANGUAGE="。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-27 22:43:12 | 显示全部楼层
好像LANG和LC_ALL是一样的,只要设置其中一个就可以显示中文了
回复 支持 反对

使用道具 举报

发表于 2010-4-27 23:07:02 | 显示全部楼层
Post by goodjob66;2086199
好像LANG和LC_ALL是一样的,只要设置其中一个就可以显示中文了

  1. $ date
  2. 2010年 04月 27日 星期二 23:01:10 CST
  3. $ LANG= date
  4. 2010年 04月 27日 星期二 23:01:16 CST
  5. $ LC_ALL= date
  6. 2010年 04月 27日 星期二 23:01:21 CST
  7. $ LANG= LC_ALL=  date
  8. Tue Apr 27 23:01:29 CST 2010
  9. $
复制代码

  1. $ locale
  2. LANG=zh_CN.UTF-8
  3. LC_CTYPE="zh_CN.UTF-8"
  4. LC_NUMERIC="zh_CN.UTF-8"
  5. LC_TIME="zh_CN.UTF-8"
  6. LC_COLLATE="zh_CN.UTF-8"
  7. LC_MONETARY="zh_CN.UTF-8"
  8. LC_MESSAGES="zh_CN.UTF-8"
  9. LC_PAPER="zh_CN.UTF-8"
  10. LC_NAME="zh_CN.UTF-8"
  11. LC_ADDRESS="zh_CN.UTF-8"
  12. LC_TELEPHONE="zh_CN.UTF-8"
  13. LC_MEASUREMENT="zh_CN.UTF-8"
  14. LC_IDENTIFICATION="zh_CN.UTF-8"
  15. LC_ALL=zh_CN.UTF-8
  16. $
  17. $ LANG= locale
  18. LANG=
  19. LC_CTYPE="zh_CN.UTF-8"
  20. LC_NUMERIC="zh_CN.UTF-8"
  21. LC_TIME="zh_CN.UTF-8"
  22. LC_COLLATE="zh_CN.UTF-8"
  23. LC_MONETARY="zh_CN.UTF-8"
  24. LC_MESSAGES="zh_CN.UTF-8"
  25. LC_PAPER="zh_CN.UTF-8"
  26. LC_NAME="zh_CN.UTF-8"
  27. LC_ADDRESS="zh_CN.UTF-8"
  28. LC_TELEPHONE="zh_CN.UTF-8"
  29. LC_MEASUREMENT="zh_CN.UTF-8"
  30. LC_IDENTIFICATION="zh_CN.UTF-8"
  31. LC_ALL=zh_CN.UTF-8
  32. $
  33. $ LC_ALL= locale
  34. LANG=zh_CN.UTF-8
  35. LC_CTYPE="zh_CN.UTF-8"
  36. LC_NUMERIC="zh_CN.UTF-8"
  37. LC_TIME="zh_CN.UTF-8"
  38. LC_COLLATE="zh_CN.UTF-8"
  39. LC_MONETARY="zh_CN.UTF-8"
  40. LC_MESSAGES="zh_CN.UTF-8"
  41. LC_PAPER="zh_CN.UTF-8"
  42. LC_NAME="zh_CN.UTF-8"
  43. LC_ADDRESS="zh_CN.UTF-8"
  44. LC_TELEPHONE="zh_CN.UTF-8"
  45. LC_MEASUREMENT="zh_CN.UTF-8"
  46. LC_IDENTIFICATION="zh_CN.UTF-8"
  47. LC_ALL=
  48. $
  49. $ LANG= LC_ALL= locale
  50. LANG=
  51. LC_CTYPE="POSIX"
  52. LC_NUMERIC="POSIX"
  53. LC_TIME="POSIX"
  54. LC_COLLATE="POSIX"
  55. LC_MONETARY="POSIX"
  56. LC_MESSAGES="POSIX"
  57. LC_PAPER="POSIX"
  58. LC_NAME="POSIX"
  59. LC_ADDRESS="POSIX"
  60. LC_TELEPHONE="POSIX"
  61. LC_MEASUREMENT="POSIX"
  62. LC_IDENTIFICATION="POSIX"
  63. LC_ALL=
  64. $
  65. $
复制代码


debian 系系统,打过补丁,locale 还会多输出变量 "LANGUAGE=zh_CN"。
回复 支持 反对

使用道具 举报

发表于 2010-4-28 20:56:27 | 显示全部楼层
呵呵,请忽略前面两贴。
一直不愿记这些变量优先级,所以一直是给 LANG LC_ALL 设置相同值。

刚按照您第一贴方式设置:
  1. #!/bin/bash
  2. unset LANGUAGE LANG LC_ALL
  3. set | grep -e LANG -e LC_ | grep -v _=
  4. locale

  5. export LANG=en_US.UTF-8
  6. locale

  7. LC_ALL=zh_CN.UTF-8 date
复制代码

手工运行,或用脚本运行均为中文日期。

如果排除误输入情况,则您系统可能有些问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表