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/