在konsole中,不显示彩色文本输出,为什么要打开新的Windows 或者标签?

分享于 

7分钟阅读

电脑

  繁體 雙語

问题:

我在日常工作中经常使用bash终端,因为我为桌面选择 KDE,所以我自然使用 来打开bash会话。 当启动konsole时,第一个会话显示彩色输出,使它快速且容易查看什么是目录,清单上的文件,例如。 当打开另一个标签( Ctrl+shift+T ) 或者窗口( Ctrl+shift+N ) 时,bash输出不再被着色。 有什么原因和快速解决方法?

编辑:

我使用的发行版是,在它的,版本( 现在几乎到了 14.0版本) 中。 根据 @terdon, answer answer shows和。bash_profile answer的链接,我将第一个会话( 重定向到文件 /tmp/win1 )的环境与后面的版本比较,而最新的版本之间不相关:


$ diff/tmp/win2/tmp/win3


24c24


 <declare -x KONSOLE_DBUS_SESSION="/Sessions/7"


---


> declare -x KONSOLE_DBUS_SESSION="/Sessions/8"


47c47


 <declare -x SHELL_SESSION_ID="7e9f9937fbfb4000a1ee37ddb8426069"


---


> declare -x SHELL_SESSION_ID="3a4ce4adac174000ba49a6ce8d381467"



第一个会话和第二个会话环境之间的差异显示了一些提示:


$ diff/tmp/win1/tmp/win2


2c2


 <declare -x CPLUS_INCLUDE_PATH="/usr/lib/qt/include:/opt/kde3/lib/qt3/include:/usr/lib/qt/include:/opt/kde3/lib/qt3/include"


---


> declare -x CPLUS_INCLUDE_PATH="/usr/lib/qt/include:/opt/kde3/lib/qt3/include"


24c24


 <declare -x KONSOLE_DBUS_SESSION="/Sessions/6"


---


> declare -x KONSOLE_DBUS_SESSION="/Sessions/7"


31c31


 <declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.bat=01;32:*.BAT=01;32:*.btm=01;32:*.BTM=01;32:*.cmd=01;32:*.CMD=01;32:*.com=01;32:*.COM=01;32:*.dll=01;32:*.DLL=01;32:*.exe=01;32:*.EXE=01;32:*.7z=01;31:*.ace=01;31:*.ACE=01;31:*.arj=01;31:*.bz2=01;31:*.cpio=01;31:*.deb=01;31:*.dz=01;31:*.gz=01;31:*.jar=01;31:*.lzh=01;31:*.lzma=01;31:*.rar=01;31:*.RAR=01;31:*.rpm=01;31:*.rz=01;31:*.tar=01;31:*.taz=01;31:*.tb2=01;31:*.tbz2=01;31:*.tbz=01;31:*.tgz=01;31:*.tlz=01;31:*.trz=01;31:*.txz=01;31:*.tz=01;31:*.tz2=01;31:*.xz=01;31:*.z=01;31:*.Z=01;31:*.zip=01;31:*.ZIP=01;31:*.zoo=01;31:*.aac=01;35:*.AAC=01;35:*.anx=01;35:*.asf=01;35:*.ASF=01;35:*.au=01;35:*.axa=01;35:*.axv=01;35:*.avi=01;35:*.AVI=01;35:*.bmp=01;35:*.BMP=01;35:*.divx=01;35:*.DIVX=01;35:*.flac=01;35:*.FLAC=01;35:*.gif=01;35:*.GIF=01;35:*.jpg=01;35:*.JPG=01;35:*.jpeg=01;35:*.JPEG=01;35:*.m2a=01;35:*.M2A=01;35:*.m2v=01;35:*.M2V=01;35:*.m4a=01;35:*.M4A=01;35:*.m4p=01;35:*.M4P=01;35:*.m4v=01;35:*.M4V=01;35:*.mid=01;35:*.midi=01;35:*.mka=01;35:*.mkv=01;35:*.MKV=01;35:*.mov=01;35:*.MOV=01;35:*.mp3=01;35:*.MP3=01;35:*.mp4=01;35:*.MP4=01;35:*.mp4v=01;35:*.mpc=01;35:*.MPC=01;35:*.mpeg=01;35:*.MPEG=01;35:*.mpg=01;35:*.MPG=01;35:*.nuv=01;35:*.oga=01;35:*.ogv=01;35:*.ogx=01;35:*.ogg=01;35:*.OGG=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.PNG=01;35:*.ppm=01;35:*.qt=01;35:*.ra=01;35:*.RA=01;35:*.ram=01;35:*.RAM=01;35:*.rm=01;35:*.RM=01;35:*.spx=01;35:*.svg=01;35:*.svgz=01;35:*.tga=01;35:*.TGA=01;35:*.tif=01;35:*.TIF=01;35:*.tiff=01;35:*.TIFF=01;35:*.vob=01;35:*.VOB=01;35:*.wav=01;35:*.WAV=01;35:*.wma=01;35:*.WMA=01;35:*.wmv=01;35:*.WMV=01;35:*.xbm=01;35:*.xcf=01;35:*.xpm=01;35:*.xspf=01;35:*.xwd=01;35:*.XWD=01;35:*.xvid=01;35:"


---


> declare -x LS_COLORS=""


37c37


 <declare -x PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/lib/pkgconfig"


---


> declare -x PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/lib/pkgconfig"


47c47


 <declare -x SHELL_SESSION_ID="98d5491a0f354000896dc496554b5bad"


---


> declare -x SHELL_SESSION_ID="7e9f9937fbfb4000a1ee37ddb8426069"


53a54


> declare -x TOOLS_HOME="/home/claudio/tools"


58c59


 <declare -x XDG_CONFIG_DIRS="/etc/xdg:/etc/kde/xdg:/etc/kde/xdg"


---


> declare -x XDG_CONFIG_DIRS="/etc/xdg:/etc/kde/xdg"



注意变量只在第一个会话中设置,但它在系统级别上定义/etc/profile.d/coreutils-dircolors.sh ( 摘录):


# Set up the LS_COLORS environment:


if [ -f $HOME/.dir_colors ]; then


 eval `/bin/dircolors -b $HOME/.dir_colors`


elif [ -f/etc/DIR_COLORS ]; then


 eval `/bin/dircolors -b/etc/DIR_COLORS`


else


 eval `/bin/dircolors -b`


fi



另外,在我的 。bashrc文件中定义的变量在第一个会话中没有显示,但它在第二个和第三个会话中。 这使得我相信只有/etc/profile.d 文件被导入到第一个会话,并且只有 到后续的会话。


回答 1:

听起来你有一个。bashrc和bash_profile问题。 我猜测设置是设置在。bash_profile而不是。bashrc。 至于颜色,我假设你指的是ls命令输出中的颜色。

你的~/.bash_profile file: 中可能有这样一行


alias ls='ls --color=tty'



尝试将该行放在 ~/.bashrc 文件中。 更多信息,如。和 bash_profile,登录和交互式shell在这里有一个 look

编辑:你说只有/etc/profile.d 文件在第一个会话中被读取。 这就是我想要的。 终端似乎将第一个打开的标签视为登录提示,而其他的则作为交互式提示。 简单的hack 是在 $HOME 目录中创建一个。profile文件,并从那里调用 ~/.bashrc:


# if running bash


if [ -n"$BASH_VERSION" ]; then


 # include. bashrc if it exists


 if [ -f"$HOME/.bashrc" ]; then


. "$HOME/.bashrc"


 fi


fi




回答 2:

我看到了一些可能性:

  • 你的别名在第一个和第二个标签之间是不同
  • 你的LS_COLORS环境变量在选项卡之间是不同
  • Konsole在它的标签( 和第二个) 之间使用两个不同
  • 这里有一个 Bug
  • 前三个是最有可能的,并且应该易于检查。 另外,#3 可能是由于每个配置文件都可以不同的shell 命令启动而导致 #1 或者 #2,的原因。



Window  Windows  COL  tab  color  OUT  
相关文章