dotnet / dotnet/command-line-api
Completions don't work for symlinked executables
- Dominant language
- C#
- Stars
- 3.7k
- Forks
- 428
- PR merge metrics
- No merged PRs in 30d
Description
It's pretty common to "install" executables on Linux by symlinking them into `$XDG_BIN_DIR`, e.g. `ln --symbolic "$XDG_DATA_HOME/go/bin/go" "$XDG_BIN_DIR/go"`
I tried something similar with a dotnet CLI I created using System.CommandLine, but I couldn't get completions to work. I tracked it down to [this line](https://github.com/dotnet/command-line-api/blob/7058640c8f0c472c399bc063e14410a04cbe5ffd/src/System.CommandLine.Suggest/dotnet-suggest-shim.zsh#LL12C11-L12C11)
```
# Get full path to script because dotnet-suggest needs it
# NOTE: this requires a command registered with dotnet-suggest be
# on the PATH
full_path=`which ${words[1]}` # zsh arrays are 1-indexed
```
Switching this to `full_path=$(realpath $(which ${words[1]}))` fixed the issue.
Would be nice for the official shims (or dotnet-suggest itself if the fix is more appropriate there) to support symlinked executables.
Contributor guide
Assessment
This issue has not been assessed yet.