dotnet / dotnet/command-line-api

Completions don't work for symlinked executables

Open
#2,201 1 comment 0 reactions 0 assignees View on GitHub
Area-Completions bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.