작업 수에 따라 PS1 설정

작업 수에 따라 PS1 설정

Bash 매뉴얼에서 (제어 프롬프트)1):

\j the number of jobs currently managed by the shell.  

\$ If the effective uid is 0, #, otherwise $.

내가 원하는 것PS1로 설정되어 있습니다

[some-string] $

일이 없을 때;

[some-string]2 $

직업이 2개일 때.

어떻게 해야 하나요?

가능하다면 솔루션은 기본 Bash 확장 및 Bash 내장만큼 간단할 수 있습니다.

답변1

screenBash는 프롬프트( 예: IIRC) 에서 조건을 지원하지 않는다고 생각 하지만 명령 대체를 사용하여 \j일부 논리를 추가할 수 있습니다.

anyjobs() { [[ "$1" != 0 ]] && echo "[ $1 bg job(s) ] "; }
PS1='$? $(anyjobs \j)\u@\h \w\$ '

이것은 Bash와 관련된 하위 쉘을 실행 fork()하지만 이 문제를 해결할 방법이 없습니다.

일반적으로 에서 변수를 설정하여 하위 쉘을 피할 수 있지만 PROMPT_COMMAND거기에서 작업 수를 얻는 쉬운 방법은 없습니다.

관련 정보