You seem to be tripping up on one of the fundamental concepts with which Bedrock users are expected to be familiar. I'll type out an answer for you here, but in case you're missing other similar fundamentals, you might want to refresh yourself on Bedrock's basics, either via the interactive tutorial accessible via `brl tutorial basics` or
by reading the basic usage documentation.
Different distros may expect different contents at a given file path. For example, Debian's `apt` and Ubuntu's `apt` need to see different mirror contents at `/etc/apt/sources.list`. Bedrock resolves this problem by providing multiple possible instances of such paths, one for each stratum; these are referred to as
local paths. Every process on a Bedrock system sees its own stratum's instance (or lack of an instance) for a given
local path. There are other types of paths as well with which you should be familiar with as a Bedrock user, but are out of the scope of what's needed to understand the immediate issue at hand.
`/usr` is normally managed by distros themselves, e.g. their package managers. The odds of a conflict between different distros at such paths are high, and thus Bedrock is configured to consider it a
local path by default, and thus every stratum has its own instance (or lack of an instance) of `/usr/share/doc/nasm`. Processes from your bedrock, void, devuan, arch, and slackware strata may each see something different at that path.
You can check which stratum provides a given resource in a given context - including but not limited to which stratum provides a given
local path in the current context - with `brl which`. If you're ever trying to investigate something like this, `brl which` should be one of the first things you check.
With this background (which is all in the Bedrock introductory documentation), the following should now make sense to you:
- Your shell stratum (you didn't specify it; you could have checked with `brl which` without any arguments) has a directory at its local instance of `/usr/share/doc/nasm`. This is why your shell can `cd` into it.
- Your slackware stratum does not have a directory at its local instance of `/usr/share/doc/nasm`. This is why when you try to launch a slackware process with the current working directory set to `/usr/share/doc/nasm` you get an warning: slackware doesn't have a `/usr/share/doc/nasm` directory to utilize as its current working directory.
- Your initial feh stratum (you didn't specify it; you could have checked with `brl which feh`) happens to have contents at `/usr/share/doc/nasm`. Maybe it's the same stratum as your shell, or maybe it's just a coincidence that your feh stratum has similar packages installed. Thus, it can set its current working directory to `/usr/share/doc/nasm` and it can read contents at that path.
- When you later launched slackware's instance of feh, it tried to use slackware's local `/usr/share/doc/nasm` path, which as was established with slackware's gpicview, lacks a directory at that path. Slackware also lacks a `/usr/share/doc/nasm/nasmlogw.png` (which is not surprising, as we've established there's no directory to contain such a file).
If you want to use one stratum's software to read or write another stratum's
local path, you should use `/bedrock/strata/<stratum>/<local-path>`. Your
Code:
bob@moonshadow:nasm $ strat slackware feh /usr/share/doc/nasm/nasmlogw.png
would have worked had you instead run
Code:
bob@moonshadow:nasm $ strat slackware feh /bedrock/strata/$(brl which)/usr/share/doc/nasm/nasmlogw.png
If you're not uncomfortable with command substitution like this, you could instead do:
Code:
bob@moonshadow:nasm $ brl which # ask Bedrock which stratum provides your shell
<shell-stratum> # I don't know what this will output for you; you didn't provide enough information.
bob@moonshadow:nasm $ strat slackware feh /bedrock/strata/<shell-stratum>/usr/share/doc/nasm/nasmlogw.png