Você está tão perto!
A interface de compartilhamento de conteúdo liga o slot ao destino do plug. Para esse fim, o parâmetro target deve estar apontando para um diretório existente (as montagens de ligação precisam ser montadas em cima de algo como qualquer outra montagem). Portanto, no seu consumer , em vez de usar o nil plugin, use o dump plugin e despeje um diretório shared vazio na raiz do snap. Em seguida, você verá o diretório provider $SNAP/src exibido no diretório consumer $SNAP/shared .
Observe que você não verá isso da perspectiva do sistema. Se você forls /snap/consumer/current/shared/ do sistema, será o diretório vazio que você colocou no snap. No entanto, quando um aplicativo é acionado, o contexto no qual ele é executado contém essa montagem de ligação. Deixe-me provar isso:
$ snap run --shell consumer
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
$ ls $SNAP/shared/
file1 file2
snap run --shell executa um shell no ambiente exato que seria usado para o aplicativo em questão. Portanto, executando snap run --shell consumer , você está solicitando um shell com o mesmo confinamento e ambiente que o aplicativo consumer teria. É por isso que eu poderia usar $SNAP lá. Observe que file1 e file2 são os arquivos contidos no diretório provider src .
Uma última nota: partindo do princípio de que você deseja que o aplicativo consumer liste o conteúdo do diretório compartilhado, altere-o para ficar assim (não é necessário usar / snap / consumer / current):
apps:
consumer:
command: ls -lR $SNAP/shared/