#  Запуск нового экземпляра acme в plan9port
hugeping (ping,1) → hugeping  –  21:48:59 2021-02-04

Если запустить acme из plan9port, а затем попробовать запустить его снова, то получим ошибку, вроде такой:

> 9pserve: announce unix!/tmp/ns.peter.:0/acme: Address already in use acme: can't post service: 9pserve failed

Поэтому, у меня есть простой скрипт, который запускает acme если он ещё не был запущен. А в последующие разы открывает файл через plumber в уже существующем экземпляре acme. Выглядит скрипт так:

====
#!/bin/sh
9

PAGER=nobs
MANPAGER=nobs

# Default font for Plan 9 programs.
font=/mnt/font/GoMono/14a/font

# Equivalent variables for rc(1).
home=$HOME
prompt="$ "

# if you want to use rc instead of your shell within acme, uncomment the following line
shell=rc

user=$USER

export \
font\
home\
shell\
prompt\
user\
PAGER\
MANPAGER

if ! pidof plumber >/dev/null; then
plumber
fi

if pidof acme >/dev/null; then
plumb -d edit "$@"
else
acme -f /mnt/font/Iosevka/14a/font "$@" &
fi
====

Но иногда хочется все-таки запустить ещё один (или не один) acme! Оказывается, это возможно!

====
#!/bin/sh
export NAMESPACE=`mktemp -d /tmp/acmeXXXX`

9

PAGER=nobs
MANPAGER=nobs

# Default font for Plan 9 programs.
font=/mnt/font/GoMono/14a/font

# Equivalent variables for rc(1).
home=$HOME
prompt="$ "

# if you want to use rc instead of your shell within acme, uncomment the following line
shell=rc

user=$USER

export \
font\
home\
shell\
prompt\
user\
PAGER\
MANPAGER

plumber "$NAMESPACE"
acme -f /mnt/font/Iosevka/14a/font "$@"
for p in `pidof plumber`; do
if cat /proc/$p/cmdline | grep -q "$NAMESPACE"; then
kill $p
break
fi
done
rmdir $NAMESPACE
====

Скрипт запустит столько acme, сколько понадобится.