++_vte_ prompt_ command +++ HISTTIMEFORMAT= +++ history 1 +++ sed ‘s/^ *[0-9] \+ *//‘ ++ local ‘ command=ip netns list‘ ++ command=‘ ip netns list‘ ++ local ‘ pwd=~‘ ++ ‘[‘ /home/u ‘!= /root ] ‘ ++ pwd=/ home/u +++_vte_ osc7 ++++_ vte_ urlencode /home/u ++++LC_ ALL=C ++++ str=/ home/u ++++ ‘ [‘ -n /home/u ‘] ‘ ++++ safe=/ home/u ++++ printf %s /home/u ++++ str= ++++‘ [ ‘-n ‘ ‘ ‘ ] ‘ ++++‘ [ ‘-n ‘ ‘ ‘ ] ‘ +++ printf 1 \033j 7; file: / /%s%s\007‘ 192.168.192.130 /home/u ++ printf ‘ \033] 777; notify; Command completed; %s \007\033] 0; %s@%s: %s\007%s‘ ‘ ip netns list‘ u 192 /home/u ‘ ‘
如果你也一样出现上面这种情况,输入set +x指令即可,然后再输其他指令就不会出现这些了。
原因:
- set -x 执行指令后,会先显示该指令及所下的参数。
- set +<参数> 取消某个set曾启动的参数。
更多关于set指令的使用以及其参数的介绍可以在终端使用指令man set进行查看,上网查找也可,这里不再过多说明。下面我主要解释一下执行set -x后为什么输出这些东西。
事情的起因是前几天我一个同学做实验时他的终端莫名其妙多输出一些信息,看起来像是记录用户操作的(见文章开头)。当时在网上也没有查到太确切的内容,由于也不是我操作的,并不清楚为什么会出现这种情况。所以我自己动手试了试,发现了个很有趣的现象:
我使用su root指令切换到root身份,执行set -x,会出现上述情况,截图如下:
而使用su - 指令进行身份切换后,执行set -x,则是这种情况,截图如下:
两种切换用户身份方式的区别请参考这篇博文:(总结)Linux下su与su -命令的本质区别
大致来说区别就是前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。
然后我上网查阅时看到大家经常提到环境变量,接着我就在普通用户的环境变量里找到这样一个变量,但是在root用户下没有找到:
感觉这是问题的关键,我进行在文件夹里搜到了这个脚本:
打开后内容如下:
看完这个脚本,我想你大概已经知道为什么会输出哪些信息了。至于更具体的原因,我也在等一个大佬指点我一番(这对我这种这今年刚接触Linux的小白太难了??)
如果这些对你有帮助的话,不妨支持一下??,也欢迎各位转载,记得注明出处就行,非常感谢?