
저는 일상 업무에서 bash 터미널을 꽤 많이 사용하는데, 데스크탑으로 KDE를 선택했기 때문에 자연스럽게 bash 터미널을 사용하게 되었습니다.콘솔bash 세션을 여는 데 사용됩니다. konsole을 시작하면 첫 번째 세션에서 컬러 출력이 표시되므로 디렉터리와 파일이 무엇인지 빠르고 쉽게 확인할 수 있습니다.ㅋㅋㅋ예를 들어 목록. 하지만 다른 탭(Ctrl+shift+T) 또는 창(Ctrl+shift+N)을 열면 bash 출력에 더 이상 색상이 지정되지 않습니다. 이에 대한 이유와 빠른 해결 방법이 있습니까?
편집하다:
내가 사용하는 배포판은 Slackware 최신 버전의 Slackware입니다(현재 버전은 거의 14.0에 도달함). .bash_profile과 .bashrc 사이의 차이점을 보여주는 @terdon의 답변에 제공된 링크를 기반으로 첫 번째 세션( file 로 리디렉션됨 /tmp/win1
)의 환경과 후속 세션( files /tmp/win2
및 로 리디렉션됨 /tmp/win3
)의 환경을 비교했습니다. 최신의 차이점은 관련이 없습니다.
$ 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"
변수에 주목하세요LS_COLORS/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
또한, 변수TOOLS_HOME, 이는 내.bashrc파일은 첫 번째 세션에는 표시되지 않지만 두 번째 및 세 번째 세션에는 표시됩니다. 이로 인해 /etc/profile.d 파일만 첫 번째 세션에 소스로 제공되고.bashrc후속 것들에게.
답변1
.bashrc 및 .bash_profile 문제가 있는 것 같습니다. 내 생각엔 .bashrc 대신 .bash_profile에 설정이 설정되어 있는 것 같습니다. 색상은 ls 명령 출력의 색상을 의미한다고 가정합니다.
~/.bash_profile 파일에 다음과 같은 줄이 있을 수 있습니다.
alias ls='ls --color=tty'
대신 해당 줄을 ~/.bashrc 파일에 배치해 보세요. .bashrc 및 bash_profile에 대한 자세한 내용은 로그인 및 대화형 쉘을 참조하세요.여기.
편집: 첫 번째 세션에서는 /etc/profile.d 파일만 읽힌다고 말씀하셨습니다. 그건 내가 예상했던 것입니다. 터미널은 처음 열린 탭을 로그인 프롬프트로 처리하고 다른 탭을 대화형 프롬프트로 처리하는 것 같습니다. 쉬운 해킹 방법은 $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은 탭 사이에 두 개의 서로 다른 프로필을 사용하고 있습니다(두 번째 프로필은 색상이 비활성화되어 있습니다).
- Konsole에 버그가 있습니다
처음 세 개가 가장 가능성이 높으며 확인하기 쉽습니다. 또한 각 프로필이 다른 쉘 명령으로 시작할 수 있으므로 #3이 #1 또는 #2의 원인일 수 있습니다.