【发布时间】:2021-05-18 11:05:13
【问题描述】:
我正在尝试在我的 CLI 包上制作自定义 bash 自动完成脚本。
当我像下面这样安装我的包时,我的命令安装在 $PATH (/usr/local/bin) 中,
$ ./configure
$ make
$ sudo make install
所以我的bash-autocomplete.sh 中的complete -o filenames -F _mycommand mycommand 可以正常工作。
(因为命令mycommand 在 $PATH (/usr/local/bin) 中
但是,当我在本地安装我的包,然后尝试从安装位置执行二进制文件时,如下所示,
$ ./configure --prefix=$HOME/usr
$ make
$ make install
complete -o filenames -F _mycommand mycommand 不起作用,因为操作系统不知道mycommand 的位置。
$ ~/uftrace$ $HOME/usr/bin/mycommand [TAB]
Command 'command' not found,
我的问题是这样的:
如何使用本地二进制文件创建 bash 补全功能? (不在 PATH 中)
我可以通过修复Makefile 或configure 或bash-autocomplete.sh 来做到这一点吗?
+
在本地安装包,而不是添加 PATH 不是一个选项,因为我想让这个 bash 自动完成功能不管安装位置。我想在安装点使用此功能。
【问题讨论】:
-
请发帖minimal reproducible example。特别是,
_mycommand中的内容是什么? -
@KangMinchul :
complete怎么可能知道,您将命令安装到了哪个目录?今天,你把它放到 ~/bin,明天可能放到 ~/local 或其他地方。 -
complete -o filenames -F _mycommand "$HOME"/usr/bin/mycommand?