"sh"로 호출된 전체 bash 로그인이 아닌 경우 스크립트 실행

"sh"로 호출된 전체 bash 로그인이 아닌 경우 스크립트 실행

나는 현재 프롬프트가 쉘의 전체 색상과 다른 색상이 되도록 터미널을 수정하려고 하고 있으며 일반 사용자에게는 흰색으로, 루트 사용자에게는 빨간색으로 만들고 싶습니다.
OS X 10.10 데스크탑과 Ubuntu 14.10 서버에서 이 작업을 수행하고 싶습니다.
내가 아는 유일한 방법은 를 수정하는 것입니다 $PS1.
그렇게 하려면 로그인 시 쉘이 소스로 사용하는 스크립트에 넣어야 합니다. 그렇죠?

/bin/sh그러나 OS에서는
이제 알아요 su - <user>. 하지만 작동하려면 그게 필요해요 su <user>.
할 수 있다루트 사용자의 로그인 쉘을 변경하지만대신에.

지금까지 내가 찾은 내용은 다음과 같습니다.

bash소스로 호출 bash하고 소스로 로그인하십시오 su -.

/etc/profile
/etc/bashrc
~/.profile

bash소스로 호출 bash하고 소스로 로그인하십시오 su.

~/.bashrc

bash소스로 호출 sh하고 소스로 로그인하십시오 su -.

/etc/profile
/etc/bashrc
~/.profile

bash소스로 호출 sh하고 로그인하면 su아무 것도 생성되지 않습니다.

하이재킹도 시도했는데 $PROMPT_COMMAND호출하면 클리어됩니다 su.

존재하다배쉬 매뉴얼그것은 말한다:

이름 sh로 전화

shBash가 이름으로 호출되면 POSIX 표준을 준수하면서 기록 버전의 시작 동작을 최대한 유사하게 모방 하려고 시도합니다 .sh

이 옵션을 사용하여 대화형 로그인 셸 또는 비대화형 셸로 호출되면 먼저 명령을 순차적으로 --login읽고 실행하려고 시도합니다 . 이 옵션을 사용하면 이 동작을 억제할 수 있습니다. 라는 대화형 셸을 호출하면 Bash는 변수를 찾고 해당 값이 정의되어 있으면 확장한 다음 확장된 값을 읽고 실행할 파일 이름으로 사용합니다. as를 호출하는 쉘은 다른 시작 파일에서 명령을 읽고 실행하려고 시도하지 않으므로 이 옵션은 효과가 없습니다. 이 이름으로 호출된 비대화형 쉘은 다른 시작 파일을 읽으려고 시도하지 않습니다./etc/profile~/.profile--noprofileshENVsh--rcfilesh

호출되면 shBash는 시작 파일을 읽은 후 POSIX 모드로 들어갑니다.

그럼...설정할 수 있는 방법은 없을까요 $ENV?
단순히 호출하기 전에 설정하는 것은 su효과가 없습니다.

$PS1아니면 UID가 변경될 때(완전히 로그인했는지 여부에 관계없이)를 사용하거나 su - ...루트의 로그인 쉘을 변경하거나 su/를 사용하지 않고도 UID를 수정할 수 있는 다른 방법이 있습니까 bash?

답변1

su -c bash

입력하는 것이 너무 많으면 별칭을 만드십시오.

plain은 초기화 파일을 로드하지 않는다는 것을 올바르게 분석했으므로 su구성이나 명령을 변경해야 합니다.

답변2

저는 개인적으로 Mac에서 사용하고 있으며 Ubuntu 서버에서도 실행됩니다. 하지만 두 개의 파일을 편집했습니다.

루트의 .profile에 내가 넣었습니다.

PS1="\[\033[1;31m\]\u\[\e[m\]@\h \[\e[0;32m\]\w\[\e[m\] \$ " # Root

내 개인 사용자의 .bash_profile을 입력하세요.

PS1="\[\033[1;32m\]\u\[\e[m\]@\h \[\e[0;32m\]\w\[\e[m\] \$ " # User

효과는 다음과 같습니다.

내 터미널 여기에서 모든 색상을 찾을 수 있습니다.http://blog.taylormcgann.com/tag/prompt-color/

하지만 귀하의 경우에는 이 솔루션을 사용해야 한다고 생각합니다. https://unix.stackexchange.com/a/174/50145

관련 정보