mirror of
https://github.com/Llewellynvdm/starship.git
synced 2024-11-04 20:37:56 +00:00
fix(bash): Count jobs with for loop to fix MacOS count issue (#2250)
In #1897 we replaced a 'wc -l' with a bash-native job counter, but subsequently discovered that bash on MacOS folds '<<<' output into a single line, preventing line counting. A for loop works around that problem, is still bash-native, and works on Linux as well. While we're at it, also removed the need for command substitution and an echo by doing the work directly on NUM_JOBS. Fixes #2241.
This commit is contained in:
parent
383d2df580
commit
3127a9aa87
@ -31,11 +31,11 @@ starship_precmd() {
|
||||
# Save the status, because commands in this pipeline will change $?
|
||||
STARSHIP_CMD_STATUS=$?
|
||||
|
||||
local NUM_JOBS
|
||||
local NUM_JOBS=0
|
||||
# Evaluate the number of jobs before running the preseved prompt command, so that tools
|
||||
# like z/autojump, which background certain jobs, do not cause spurious background jobs
|
||||
# to be displayed by starship. Also avoids forking to run `wc`, slightly improving perf
|
||||
NUM_JOBS=$(n=0; while read line; do [[ $line ]] && n=$((n+1));done <<< $(jobs -p) ; echo $n)
|
||||
# to be displayed by starship. Also avoids forking to run `wc`, slightly improving perf.
|
||||
for job in $(jobs -p); do [[ $job ]] && ((NUM_JOBS++)); done
|
||||
|
||||
# Run the bash precmd function, if it's set. If not set, evaluates to no-op
|
||||
"${starship_precmd_user_func-:}"
|
||||
|
Loading…
Reference in New Issue
Block a user