시스템 전체에 터미널 색상을 적용하는 방법은 무엇입니까? (/etc/profile.d 또는 이와 유사한 것을 사용하십시오)

시스템 전체에 터미널 색상을 적용하는 방법은 무엇입니까? (/etc/profile.d 또는 이와 유사한 것을 사용하십시오)

나는 사용한다쉘용 Base16쉘의 기본 ANSI 색상을 변경하는 스크립트입니다. 예를 들어:

$ wget https://github.com/chriskempson/base16-shell/raw/master/scripts/base16-nord.sh
$ sh base16-nord.sh

이 스크립트는 터미널 색상을 다음과 같이 변경합니다(저는 openSUSE Leap 15.1 및 GNOME 3.26.2를 사용하고 있습니다).

여기에 이미지 설명을 입력하세요.

이와 관련하여:

여기에 이미지 설명을 입력하세요.

GNOME 터미널뿐만 아니라 모든 가상 콘솔(예: )에서도 작동합니다 tty1.

하지만 새 터미널 창/세션을 시작할 때마다 또는 ~/.bashrc.

문제는 이 색상 테마 시스템을 어떻게 널리 사용할 수 있느냐는 것입니다. (모든 사용자가 동일한 색상 테마를 적용하도록)

대부분의 페이지에서는 또는 을 사용자 정의하는 방법을 설명 PS1하지만 LS_COLORS이는 제가 원하는 것이 아닙니다. 그래서 나는 새로운 질문을 시작했습니다.

답변1

동일한 Base16 Shell 테마를 시스템 전체(모든 사용자에게)에 적용하는 방법을 찾았습니다. 하지만 나는 이 일을 하는 더 좋은 방법이 있다고 믿습니다. 어떤 제안이라도 대단히 감사하겠습니다.

  1. 모든 사용자가 액세스할 수 있는 폴더(예: /usr/share/base16-shell/) 에 Base16 Shell을 다운로드합니다.
$ sudo git clone https://github.com/chriskempson/base16-shell.git /usr/share/base16-shell/
  1. 시스템 전체에 ~/.bashrc해당하는 /etc/bash.bashrc.local.

/etc/bash.bashrc.local필요한 경우 이 파일을 만듭니다.

다음을 추가합니다.

# Base16 Shell
BASE16_SHELL="/usr/share/base16-shell/"
[ -n "$PS1" ] && \
    [ -s "$BASE16_SHELL/profile_helper.sh" ] && \
        eval "$("$BASE16_SHELL/profile_helper.sh")"
  1. /etc/skel(새 사용자의 홈 페이지 프레임) 에서 기본 적용 테마에 대한 심볼릭 링크를 만듭니다.
$ sudo ln -s /usr/share/base16-shell/scripts/base16-material-darker.sh /etc/skel/.base16_theme
  1. 새 사용자를 만듭니다(openSUSE에서는 다음을 사용할 수 있습니다).YaST 제어 센터)

  2. 새로운 사용자로 로그인하고 그놈 터미널을 엽니다. 테마가 적용된 것을 볼 수 있습니다:

여기에 이미지 설명을 입력하세요.

테스트 사용openSUSE Leap 15.2 베타 그놈 라이브 미러.

노트:

  1. 에서 작업 중이므로 /etc/skel테마는 신규 사용자(이 과정 이후에 생성된 사용자)에게만 적용됩니다. 기존 사용자는 테마를 적용하려면 Base16 Shell을 한 번만 호출해야 합니다. 하지만 앞서 말했듯이 더 좋은 방법이 있다고 믿습니다.
  2. AFAIK /etc/bash.bashrc.local는 모든 사용자(기존 사용자와 신규 사용자 모두)에게 작동하므로 Base16 Shell은 실제로 모든 사용자에 대해 설정합니다. 원하는 경우 누구나 Base16 Shell 스크립트를 호출하여 테마를 변경할 수 있습니다. 예를 들어:
$ base16_material-lighter
  1. 저는 예를 들어 GNOME 터미널을 사용하고 있지만 가상 콘솔에서도 작동합니다(예 tty1: Ctrl + Alt + F1). 그런데 가상 콘솔에서 이상한 동작이 관찰되었습니다.

여기에 이미지 설명을 입력하세요.

색상은 로그인 후에만 적용되며, 전체 화면에는 적용되지 않습니다.

그런 다음 다음을 실행합니다.

$ clear

모든 것이 괜찮아 보입니다.

여기에 이미지 설명을 입력하세요.

(이 스크린샷에서는 clear명령이 나타나지 않아서 ll다시 실행했습니다.)

다른 테마를 사용하면 문제가 더욱 분명해집니다.

여기에 이미지 설명을 입력하세요.

그런 다음 clear다시 ll다음을 수행합니다.

여기에 이미지 설명을 입력하세요.

관련 정보