找回密码
 注册
查看: 4589|回复: 1

Tab键命令补全失效解决办法

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-5-22 10:06:56 | 显示全部楼层 |阅读模式
问题描述
) ~- j  ]0 _/ F& m9 F3 Y突然便出现了Tab键不能补全的问题,cat、ls、cd都如此,如下9 c4 r8 E7 G. U+ S
tmp# vi no-sh: <( compgen -d -- 'no' ): No such file or directory3 j1 Z* R( v, k. d
-sh: <( eval compgen -f -X <a href="mailto:' rel=" nofollow"*.@(o%7cso%7cso.!(conf)%7ca%7crpm%7cgif%7cgif%7cjp?(e)g%7cjp?(e)g%7cmp3%7cmp3%7cmp?(e)g%7cmpg%7cavi%7cavi%7casf%7casf%7cogg%7cogg%7cclass"="">'*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g|JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class</a>|5 [6 @, j5 p# Z

" m( r+ E# M, a% m9 B* H" O8 @' E从以上可以看出是命令解析的问题.
0 r; q) J# J: @) ~4 r( {6 Q
5 |% t% }; z" e/ L  U. g* S( w7 A- r解决办法8 N7 D- b/ s& _" q* d; f
查看/etc/passwd文件(该文件存储的是操作系统用户信息)
. c% P6 ^* O1 q' H6 E' U5 iroot:x:0:0:root:/root:/bin/bash: C& i2 d" r4 w
daemon:x:1:1:daemon:/usr/sbin:/bin/sh9 Q  ^# Q& u: S3 i
bin:x:2:2:bin:/bin:/bin/sh
$ h2 x$ k% n6 q9 K' A) P9 jsys:x:3:3:sys:/dev:/bin/sh
; B  y5 s9 i; Q2 c% r* J. v  Jsync:x:4:65534:sync:/bin:/bin/sync
0 A% e# ~! `% Rgames:x:5:60:games:/usr/games:/bin/sh
1 S( F/ S/ p5 iman:x:6:12:man:/var/cache/man:/bin/sh7 z; G/ P5 M9 m) Z1 U( v. _
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
3 @' O. _( Y. }+ y! Z' Mmail:x:8:8:mail:/var/mail:/bin/sh0 S0 T* j: {3 q3 |& Z, G" S8 ~
news:x:9:9:news:/var/spool/news:/bin/sh5 \7 X! Z+ n" @
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh  a8 l5 s  v% R1 R, _
proxy:x:13:13:proxy:/bin:/bin/sh% k, S$ l  |. Y9 f; A4 x
www-data:x:33:33:www-data:/var/www:/bin/sh& v! l! M' `# ~1 Y$ h
backup:x:34:34:backup:/var/backups:/bin/sh
  y( K! l# ^6 Y& \1 |' n# slist:x:38:38:Mailing List Manager:/var/list:/bin/sh( p; O( h$ w8 y/ \+ m
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
( u' b+ o0 x8 `& Q2 K, Z  K; Agnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
* q: u; L$ I4 u: K2 {* m$ Dnobody:x:65534:65534:nobody:/nonexistent:/bin/sh& ?# _$ R) X" J
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
' m0 E$ Q9 k# |; M4 o% aDebian-exim:x:101:103::/var/spool/exim4:/bin/false& E4 P+ R1 p6 |. T
statd:x:102:65534::/var/lib/nfs:/bin/false
- C( ?8 s( G& [" t; L8 H( K6 L  {) Kvansome:x:1000:1000:vansome,,,:/home/vansome:/bin/bash
1 y7 m7 u& X$ C6 f5 Nsshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin  P2 e+ z3 n9 |0 P. w/ Y
3 n8 x) }& J) |% J
/ G7 |/ g9 D: P/ z2 q% L. E
该文件存放的用户信息由6个分号组成的7个信息,解释如下2 R) I( |# p. C/ ?; m
   (1):用户名。/ l1 d  n6 q% |. c5 i* u5 L
   (2):密码(已经加密)2 X# I. S3 w  c: h
   (3):UID(用户标识),操作系统自己用的4 j! c' d( [7 h9 i2 t* x; t
   (4):GID组标识。
4 r2 _5 d. R7 q   (5):用户全名或本地帐号
+ x! d# c& o; S" ?* v8 T   (6):开始目录+ E3 y/ o9 L* m' X7 G( {4 V
   (7):登录使用的Shell,就是对登录命令进行解析的工具。
/ I7 j" T( A' o0 C( J从该文件可以看出hadoop用户所用的命令解析shell为sh。因为是命令解析的原因导致Tab键不能补全,故修改当前出错用户的shell。7 D, y* A8 t8 N4 o; U& M3 b
在root用户下修改
+ m# Y4 G' Y/ K# G( s9 k8 S- N- S3 i; w
root:x:0:0:root:/root:/bin/sh- ]. E$ ]* R9 N- ^
修改为$ ?" p% _" w- q( q" s
root:x:0:0:root:/root:/bin/bash
' p+ e+ D0 H; ^/ y: y+ D重启console,问题解决。
4 d/ `# P! C7 K1 d  c: x所以应该是在装某个软件的时候篡改了/etc/passwd文件,或者在创建用户的时候指定了shell为sh,导致tab键不能正常补全。& I" m& }. @" Y  G, h

) w6 q4 t  e4 gbash和sh有什么区别呢?% ^9 k* e5 r! i2 U
两者都是shell,都是解析工具。
! F: {9 P( [. C' ?# k& \! u8 abash(Bourne Again SHell) 是linux标准的默认shell ,它基于Bourne shell,吸收了C shell和Korn shell的一些特性。
4 k' C& K' t+ P( [" R6 ~sh(Bourne shell )是UNIX标准的默认shell,它简洁(concise)、紧凑(compact)  、高效(fast) ,是由AT&T编写,属于系统管理shell。; G5 M4 a" \, b, k
bash完全兼容Bourne shell,也就是说用Bourne shell的脚本不加修改可以在bash中执行。5 [4 }6 ~4 J$ k- u
————————————————5 \- s& ?1 b9 b

# Z# J$ N1 M+ w# D5 x2 T

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-5-22 10:34:42 | 显示全部楼层
通过service 系统命令基本上可以补全。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 04:33 , Processed in 0.019024 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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