Skip to content

Commit

Permalink
modify LC_CTYPE before login & restore LC_CTYPE after login
Browse files Browse the repository at this point in the history
  • Loading branch information
goindow committed Sep 14, 2021
1 parent be77706 commit dcec129
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions mshell.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
# 取消通配符解析
set -f

# 解决使用 expect 脚本登录后 lrzsz 失效问题
# 仅设置 CTYPE 虽然 lrzsz 可以正常使用,但是系统提示会出现中文乱码,故全切成 en_US
#export LC_CTYPE=en_US
export LC_ALL=en_US

# 工作路径,可更换
path=~
Expand Down Expand Up @@ -57,11 +53,19 @@ set pwd [lindex $argv 3]
spawn ssh -p $port $user@$host
# 自动登录
expect {
"yes/no" { send "yes\r" }
"assword:" { send "$pwd\r" }
}
# 登录成功后,恢复 LC_CTYPE,保证中文不乱码
# 父shell 为了保证 lrzsz 可用,LC_CTYPE 被设置为了 en_US,会导致子 shell(自动登录后) 中文乱码
expect "Last login:" {
sleep 0.3;
send "export LC_CTYPE=zh_CN.UTF-8\r"
}
interact
EOF
}
Expand Down Expand Up @@ -398,6 +402,8 @@ function add_session() {
function ssh_to_session() {
ensure_onlyone_session_matched ssh $1
ensure_expect_script_exists ssh
# 解决使用 expect 脚本登录后 lrzsz 失效问题,在 expect 脚本钟恢复子shell 的 LC_CTYPE=zh_CN.UTF-8
export LC_CTYPE=en_US
# Usage: ./ssh.exp host port user [password]
$ssh_expect_script $(get_session_auth_info $1)
}
Expand Down

0 comments on commit dcec129

Please sign in to comment.