docs(skill): note macOS NFD-filename gotcha for dscp/scp
Lint workflows / hadolint (push) Failing after 12s
Lint workflows / actionlint (push) Successful in 27s
Validate / docs-check (push) Failing after 20s
Validate / base-change-warning (push) Successful in 16s
Validate / validate-base (push) Has been skipped
Validate / validate-omos (push) Has been skipped

Mirror of the pi-devbox note: accented filenames on a macOS host are stored
decomposed (NFD), so a precomposed (NFC) remote path in scp/dscp silently fails
with 'No such file or directory'. Document the wildcard / list-first workaround
next to the dssh/dscp alias table in opencode-devbox-environment.
This commit is contained in:
2026-07-17 13:08:56 +02:00
parent 03b8fa431e
commit bade89ff35
@@ -96,6 +96,22 @@ are "command not found" there — you must spell out the underlying command.
If a command "works in my terminal but not when the agent runs it," this alias If a command "works in my terminal but not when the agent runs it," this alias
gap is the first thing to suspect. gap is the first thing to suspect.
**`dscp`/`scp` with accented filenames on a macOS host.** macOS stores filenames
in Unicode **NFD** (decomposed — e.g. `ä` is `a` + combining U+0308), while the
string you type or paste is usually **NFC** (precomposed `ä`, U+00E4). The bytes
differ, so a precomposed remote path *silently* fails to match on the host —
`scp … "mac:'~/Desktop/Skärmavbild ….png'"` returns *No such file or directory*
even though the file plainly exists. Sidestep the encoding entirely: let the
**remote shell expand a wildcard**, or list the directory first and copy the
exact name it prints.
```sh
# glob dodges the NFC/NFD mismatch (the remote shell matches the real bytes):
scp -F "$HOME/.ssh-local/config" "mac:~/Desktop/Sk*rmavbild*.png" ./
# or read the exact filename first, then copy that:
ssh -F "$HOME/.ssh-local/config" mac 'ls -1 ~/Desktop/*.png'
```
## 3. Reaching the Docker host and its LAN over SSH ## 3. Reaching the Docker host and its LAN over SSH
When the host is VM-backed (e.g. OrbStack / Docker Desktop on macOS) the When the host is VM-backed (e.g. OrbStack / Docker Desktop on macOS) the