Если запустить 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, сколько понадобится.
|