두 개의 명령이 필요합니다. 첫 번째 명령은 프롬프트를 $␣
또는 로 줄입니다 #␣
. 이는 long_prompt
프롬프트를 기본 버전으로 재설정하는 명령을 실행할 때까지 현재 셸에서 영구적이어야 합니다 .
short_prompt
명령 스크립트 는 다음과 같습니다 .
if [ $(id -u) = 0 ]; then
PS1='\[\033[01;34m\]#\[\033[00m\] '
else
PS1='\[\033[01;34m\]\$\[\033[00m\] '
fi
(보시다시피 저는 관리자 쉘과 사용자 쉘에 대한 서로 다른 프롬프트를 존중합니다.)
이 스크립트를 다음과 같이 얻었을 때:
$ . short_prompt
모든 것이 예상대로 작동하지만 이를 위해서는 다음과 같이 디렉토리에 있거나 short_prompt
전체 경로 이름을 제공해야 합니다.
$ . /data/system/bin/short_prompt
/usr/local/bin
이 명령을 어디서든 액세스할 수 있게 만드는 방법(예를 들어 경로 디렉토리 중 하나에 대한 소프트 링크를 생성하여 )을 파악하고 다음을 입력하는 방법 을 알 수 없는 것 같습니다.
$ short_prompt
또는
$ long_prompt
export
앞에 두 줄을 추가하려고 시도했지만 PS1='...'
그 중 하나도 작동하지 않았습니다.
답변1
실행 중인 셸의 PS1에 영향을 미치는 유일한 방법은 코드를 얻는 것입니다.
이 문제를 해결하는 방법에는 여러 가지가 있습니다.
/home/user/bin에 스크립트를 넣습니다.
실행 가능하도록 스크립트 이름을 지정
short_prompt
하고/home/user/bin
.#!/bin/bash . /data/system/bin/short_prompt
이렇게 하면 실행이 간단해집니다.
$ 짧은 프롬프트
별칭을 지정하세요
$ alias short_prompt='. /data/system/bin/short_prompt'
실행은 다음과 같습니다
$ short_prompt
사용
~/.bashrc
:코드를 "~/.bashrc"에 함수로 배치합니다.
short_prompt(){ PS1='\[\033[01;34m\]\$\[\033[00m\] ' }
호출 방법은 다음과 같습니다.
$ short_prompt
답변2
스크립트를 디렉터리에 넣으면 PATH
Bash는 source
이를 사용하여 소스에 대한 스크립트를 찾습니다. 이건 바뀔 수 있어shopt sourcepath
하지만 기본적으로 켜져 있습니다.
또 다른 옵션은 스크립트가 있는 경로에서 스크립트를 가져오는 별칭이나 함수를 만들거나 전체 프롬프트 할당을 함수에 넣는 것입니다. 이는 또한 스크립트를 명시적으로 사용 .
하거나 호출할 필요가 없다는 장점도 있습니다 .source
참고로, 루트인 경우 루트 \$
로 확장되므로 #
루트에 대해 별도의 경로를 설정할 필요가 없습니다.
할당하면 export
현재 셸에서 시작할 수 있는 다른 모든 셸에 환경 변수가 표시됩니다. PS1
비대화형 쉘이 이를 지우는 데 문제가 있지만 일반적 으로 .bashrc
.