사용자를 전환할 때 명령 색상이 사라지는 이유는 무엇입니까?

사용자를 전환할 때 명령 색상이 사라지는 이유는 무엇입니까?

agochar현재 GUI 로그인을 통해 로그인되어 있습니다. 터미널에 명령을 입력할 때마다 표시됩니다.파란색색상인데 사용자를 전환 sudo su anupam하고 터미널에 명령을 입력하면 색상이 없어지나요? 저는 방금 리눅스를 배우기 시작했기 때문에 이 분야의 전문가는 아닙니다. 이것은 그다지 심각한 문제는 아니지만 누군가 이 문제를 해결하도록 도와줄 수 있다면 Linux 명령줄을 배우는 것이 더 쉬울까요?

답변1

쉘 의 경우 zsh아마도 .zsh-syntax-highlighting파란색 명령나는 길을 찾아야 한다 /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh. 이 구성은 명령뿐만 아니라 " " 및 사이의 문자열 ' ', 경로 이름 및 존재하지 않는 명령에도 영향을 미칩니다. 예를 들어 다음을 사용하여 이 동작을 얻습니다 zsh-syntax-highlighting.

bash에서 사용한 프로파일은 사용할 수 없으므로 다른 zsh프로파일을 설치해야 합니다. 대안 zsh-syntax-highlighting은 다음 명령을 사용하여 설치할 수 있지만 먼저 사용자로 로그인했는지 확인하십시오 ble.sh( 명령이 셸을 사용한다고 가정).
anupambash

curl -L https://github.com/akinomyoga/ble.sh/releases/download/nightly/ble-nightly.tar.xz | tar xJf -
mv ble-nightly* ~/.local/share/blesh
echo 'source ~/.local/share/blesh/ble.sh' >> ~/.bashrc

아니면 확인할 수 있습니다git 저장소그리고 다양한 설치 방법에 따라 운영 체제에 설치하세요.
그러나 git 저장소에서 다음을 사용하기 때문에 작은 버그를 발견했습니다(제 경우에는 전혀 작동하지 않는 한).

mkdir -p ~/.local/share/blesh
mv ble-nightly* ~/.local/share/blesh
echo 'source ~/.local/share/blesh/ble.sh' >> ~/.bashrc

그러나 실제로 경로는 ~/.local/share/blesh/ble.sh존재하지 않습니다. 실제 경로는 다음과 같습니다 ~/.local/share/blesh/ble-nightly-20221112+0c6291f/ble.sh. 따라서 앞서 제공한 명령을 사용하는 것이 좋습니다.(명령이 mv다르게 동작하는지 확실하지 않습니다.애플 시스템)


마지막으로 다시 로그인하면 anupam비슷한 동작이 나타날 수 있습니다 zsh.

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

노트:터미널에 큰 명령을 붙여넣을 때 이러한 구성을 사용하면 속도가 약간 느려질 수 있습니다. in zshPaste 명령은 일반적으로 in Paste 명령보다 속도가 느린 것으로 나타났습니다 bash.

답변2

터미널 설정, 명령 프롬프트 모양, 색상 등은 쉘 시작 스크립트에 의해 설정됩니다. 가장 일반적으로 사용되는 쉘 의 경우 파일은 , , 및 에 bash있습니다 ./etc/profile~/.bash_profile~/.bash_login~/.profile~/.bashrc

를 실행할 때 sudo다른 시작 스크립트(및 다른 셸도 가능)를 사용하여 다른 사용자로 명령을 실행합니다. 특히 루트 사용자와 새로 생성된 사용자는 시작 스크립트만 갖고 있는 경우가 많습니다. 의견에서 사용을 언급했지만 zsh루트 및 신규 사용자는 bash기본적으로 이를 사용하도록 설정되어 있을 가능성이 높습니다.

나는 구성에 익숙하지 않습니다 zsh. 그러나 대부분의 쉘에서 컬러 프롬프트를 빠르게 설정하는 가장 쉬운 방법은 다음을 사용하는 것입니다.우주선. 사용 중인 배포판에 따라 패키지 저장소에서 찾을 수 있습니다.

답변3

배쉬를 사용하는 경우

/home/$USER/.bashrc$USER에 고유한 구성 파일이 있기 때문입니다. 이 프로필을 root구성 파일 로 사용하려면 대신 다음을 수행하십시오.

if [[ $UID == 0 ]]; then
   export PS1="root_Profile"
else
   export PS1="user_Profile"
fi

$UID== 0은 루트 계정에 있음을 의미하고, 그렇지 않으면 $USER 계정/프로필임을 의미합니다.

관련 정보