The Ops Community

Emre for Z-Shell

Posted on • Originally published at dev.to on

✨〰️ ZI 〰️✨ Annex - LinkBin

ZI Swiss army knife


❮ ZI ❯ 🧙‍‍♀️ A Swiss Army Knife for Zsh.

Designed to glue everything together. 🔗

Website | GitHub | Discussions | Localize | Wiki Annexes


Run programs and scripts without adding anything to $PATH via the automated links to $ZPFX/bin
eval preview


📥 Install

zi light z-shell/z-a-linkbin

Enter fullscreen mode Exit fullscreen mode

🔧 How it works

Exposing a binary program without modifying $PATHz-a-linkbin will automatically create a hard or soft link to the binary in $ZPFX/bin exposing the program to the command line as if it were being placed in $PATH.

The command can then be accessed normally – not only in the live Zsh session, but also from any Zsh script.

The ice-modifier lbin'' provided by the annex creates links for binaries and scripts.

It creates the link that calls the actual binary.

The link is created always under the same, standard and single $PATH entry: $ZPFX/bin

The optional preceding ! flag means create a soft link instead of a hard link.

For example,

zi ice from'gh-r' lbin'!fzf'
zi load junegunn/fzf

Enter fullscreen mode Exit fullscreen mode

Check the output:

ls -l $ZPFX/bin/ | awk '{print $(NF-2),$(NF-1),$NF}'
fzf --version

Enter fullscreen mode Exit fullscreen mode

The ice can contain globs. It will expand these when searching for the binary.

Example:

zi ice from'gh-r' lbin'**fzf -> myfzf'
zi load junegunn/fzf

Enter fullscreen mode Exit fullscreen mode

Check the output:

ls $ZPFX/bin
myfzf --version

Enter fullscreen mode Exit fullscreen mode

The ice can be empty. It will then try to create the link:

✴️ trailing component of the id_as ice, e.g.: id_as'exts/git-my' → it will check if a file git-my exists and if yes, create the link git-my,
✴️ the plugin name, e.g.: for paulirish/git-open it'll check if a file git-open exists and if yes, create the link git-open,
✴️ trailing component of the snippet URL,
✴️ for any alphabetically first executable file.

Above also applies if just ! were passed.

This repository compatible with ZI.

Have the best and leave the rest! 😎

Discussion (0)