I don’t know what JNLP does exactly, but it looks like you are dropped into sh instead of bash. What does echo $SHELL say? If you’re running bash it’ll say bash. When using sh, the variable is empty.
sh doesn’t include /snap/bin in it’s PATH, bash does. That’s the only difference.
There are several ways to get a shell into a LXD container. Ideally, you would want to get a login shell so that your shell reads by default any configuration files that are meant to be read.
You can run lxc exec to execute a command in a container, and a byproduct of that is you can you run bash to get a shell. The close that the LXD lxc client has to get a shell, is the lxc shell built-in alias.
If you want to get a non-root shell into a container, you would need to write the full command yourself. And this is because this ubuntu non-root account is only available in the ubuntu: and images:ubuntu/.../cloud container images.
To answer your question, the snapd package installs this file, /etc/profile.d/apps-bin-path.sh which configured your $PATH to include /snap/bin for you. A login shell will source this file and setup successfully the $PATH for snaps.
If you were to add snaps to your $PATH manually, you can just run the following,