$$
- это PID исходного процесса оболочки, запускающего сценарий. Это не PID процесса оболочки, который выполняет расширение. $$
не меняется в подоболочке.
Если вам нужен PID подоболочки, переносимый метод - запустить sh -c 'echo $ PPID'
. В bash ≥4 PID процесса оболочки, выполняющего расширение, находится в магической переменной BASHPID
.
fun() {
if [ -n "$BASHPID" ]; then
echo "$1 $BASHPID"
else
echo "$1 $(sh -c 'echo $PPID')"
fi
sleep 3
}
Поэтому я отладил его, просматривая /var/log/syslog
и выяснил, что это связано с набором значков, который я использовал, и смог исправить это, заменив устаревшую версию набора значков более обновленной версией, которая была доступно только на GitHub.
Проблема возникла из-за того, что я загрузил значки из Ubuntu PPA в виде пакета, доступного в частном репозитории. Эта версия не обновлялась в течение последних 12 дней, пока она была исправлена, поэтому в итоге я просто скачал исходный код, и у меня все заработало