易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4582|回复: 1
收起左侧

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

[复制链接]
发表于 2020-5-22 10:06:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
问题描述# C! K' |0 P$ A% [
突然便出现了Tab键不能补全的问题,cat、ls、cd都如此,如下+ ]- J+ O& ?  e" O. H# v9 y
tmp# vi no-sh: <( compgen -d -- 'no' ): No such file or directory5 t6 I4 M! |) R% X! a( `# s
-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>|
6 e, L% ^! m( l! j, v9 y% T! } , L& T# j% N0 Q- I6 a# Y
从以上可以看出是命令解析的问题.
& E( o4 m$ k+ l' H4 W2 r. E" j# V! w9 W7 o$ w1 F; y( G9 l
解决办法% s2 b6 e. [9 X
查看/etc/passwd文件(该文件存储的是操作系统用户信息)  O7 n7 J* F+ ~! c1 ]6 B
root:x:0:0:root:/root:/bin/bash, L9 O0 G+ V. D$ O( D% x
daemon:x:1:1:daemon:/usr/sbin:/bin/sh) C+ d6 Q0 G$ w
bin:x:2:2:bin:/bin:/bin/sh
7 ]$ B& [- s8 _( X4 nsys:x:3:3:sys:/dev:/bin/sh
1 z( {: v6 @4 Y/ msync:x:4:65534:sync:/bin:/bin/sync
; t8 N  ?8 p" ^/ cgames:x:5:60:games:/usr/games:/bin/sh
0 G- U4 ?* k: o* |8 T8 mman:x:6:12:man:/var/cache/man:/bin/sh4 N0 V( K% {8 i, X! Q" B+ j8 G
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
9 m6 r; f" C$ T0 \" y) [mail:x:8:8:mail:/var/mail:/bin/sh
6 J4 x$ o/ Y; l% }1 L! anews:x:9:9:news:/var/spool/news:/bin/sh
' f4 ^$ T! O3 o  v, l# iuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
; s2 Z1 t6 c5 p* i: v3 jproxy:x:13:13:proxy:/bin:/bin/sh
) j: S* T0 o, Hwww-data:x:33:33:www-data:/var/www:/bin/sh, U/ K2 k, N, n( P2 p+ u
backup:x:34:34:backup:/var/backups:/bin/sh6 l. C: a& H: \( I+ }0 j. _- A! n3 b+ G
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
" W3 J, y. p) d1 I: Firc:x:39:39:ircd:/var/run/ircd:/bin/sh+ @; F# c! y) h/ ^7 e
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh, I) y* j% O9 x  y" r/ \5 s
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
# t1 v! o8 a; e! B0 dlibuuid:x:100:101::/var/lib/libuuid:/bin/sh4 k% J7 F% T9 t# \: s2 k& `
Debian-exim:x:101:103::/var/spool/exim4:/bin/false; K* w, M. D3 c5 r5 e
statd:x:102:65534::/var/lib/nfs:/bin/false; T* v: M1 N+ Q3 @2 J) ?* \* V; ]
vansome:x:1000:1000:vansome,,,:/home/vansome:/bin/bash& ~" O1 F1 P8 G% A$ l
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
( Y! K" Q4 C( T! g; y  t, m$ [

; Z3 v5 k9 ~+ P0 p7 n4 ~1 ^$ o该文件存放的用户信息由6个分号组成的7个信息,解释如下
* w& w7 }6 N0 ]( d6 D1 g& }   (1):用户名。
& ~( Y- x# w, y' m' J; q   (2):密码(已经加密)
% U: v: c6 ~- Q6 B5 N, E   (3):UID(用户标识),操作系统自己用的
, c* \6 l; |1 T! v   (4):GID组标识。
' \! t7 A$ }9 p2 y+ u( [   (5):用户全名或本地帐号
9 h- u, R; m# Z2 v0 `& h3 I; \4 j   (6):开始目录
' Q, ^1 m! U3 F4 w5 Q# B) i   (7):登录使用的Shell,就是对登录命令进行解析的工具。) l; g. v" G* L: x/ A# ^
从该文件可以看出hadoop用户所用的命令解析shell为sh。因为是命令解析的原因导致Tab键不能补全,故修改当前出错用户的shell。$ f/ ?1 I/ G/ Y2 l, G" z0 V0 v6 T  B
在root用户下修改
5 H1 \, r5 A( u% v
8 B) `& H/ Q* W0 Y  C* i; Uroot:x:0:0:root:/root:/bin/sh! o. E& }/ n/ E
修改为
* l* w+ K$ V: q8 ?root:x:0:0:root:/root:/bin/bash% O- K  d( K% Z, e' R
重启console,问题解决。4 L, @8 z  L) v8 ?4 Q  h
所以应该是在装某个软件的时候篡改了/etc/passwd文件,或者在创建用户的时候指定了shell为sh,导致tab键不能正常补全。
5 l* t( m+ x3 `
# z$ A- w5 M2 t5 _bash和sh有什么区别呢?
7 x1 U0 n8 X3 n# N* A两者都是shell,都是解析工具。2 ~/ U- n% q% |; K2 u! m8 j
bash(Bourne Again SHell) 是linux标准的默认shell ,它基于Bourne shell,吸收了C shell和Korn shell的一些特性。5 Z% k/ H7 G. q' V0 O% L
sh(Bourne shell )是UNIX标准的默认shell,它简洁(concise)、紧凑(compact)  、高效(fast) ,是由AT&T编写,属于系统管理shell。
1 x  `. ?: ]+ v6 abash完全兼容Bourne shell,也就是说用Bourne shell的脚本不加修改可以在bash中执行。7 Q, [; N0 M' N( f- g: k
————————————————
3 V- ]3 e9 L# s- _/ Q4 S: B, W3 m- {% H# k7 G9 K: e
 楼主| 发表于 2020-5-22 10:34:42 | 显示全部楼层
通过service 系统命令基本上可以补全。
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:38 , Processed in 0.050200 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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