bash_completion.d: always call zfs/zpool binaries directly
/dev/zfs is 0:0 666 on most systems, so the [ -w /dev/zfs ] check always succeeds, but if zfs isn't in $PATH (e.g. when completing from "/sbin/zfs list" on a regular account) this can lead to error spew like nabijaczleweli@szarotka:~$ /sbin/zfs list bash: zfs: command not found @ bash: zfs: command not found We only do read-only commands, and quite general ones at that, so there's no need to elevate one way or another. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #11828
This commit is contained in:
parent
d539b77934
commit
35cce6ea63
|
@ -0,0 +1 @@
|
||||||
|
/zfs
|
|
@ -1,5 +1,8 @@
|
||||||
|
include $(top_srcdir)/config/Substfiles.am
|
||||||
|
|
||||||
bashcompletiondir = $(sysconfdir)/bash_completion.d
|
bashcompletiondir = $(sysconfdir)/bash_completion.d
|
||||||
|
|
||||||
noinst_DATA = zfs
|
noinst_DATA = zfs
|
||||||
|
|
||||||
EXTRA_DIST = $(noinst_DATA)
|
EXTRA_DIST += $(noinst_DATA)
|
||||||
|
SUBSTFILES += $(noinst_DATA)
|
||||||
|
|
|
@ -21,13 +21,8 @@
|
||||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
# OTHER DEALINGS IN THE SOFTWARE.
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
if [[ -w /dev/zfs ]]; then
|
__ZFS_CMD="@sbindir@/zfs"
|
||||||
__ZFS_CMD="zfs"
|
__ZPOOL_CMD="@sbindir@/zpool"
|
||||||
__ZPOOL_CMD="zpool"
|
|
||||||
else
|
|
||||||
__ZFS_CMD="sudo zfs"
|
|
||||||
__ZPOOL_CMD="sudo zpool"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Disable bash's built-in hostname completion, as this makes it impossible to
|
# Disable bash's built-in hostname completion, as this makes it impossible to
|
||||||
# provide completions containing an @-sign, which is necessary for completing
|
# provide completions containing an @-sign, which is necessary for completing
|
||||||
|
@ -198,7 +193,7 @@ __zfs_complete_multiple_options()
|
||||||
|
|
||||||
COMPREPLY=($(compgen -W "$options" -- "${cur##*,}"))
|
COMPREPLY=($(compgen -W "$options" -- "${cur##*,}"))
|
||||||
local existing_opts=$(expr "$cur" : '\(.*,\)')
|
local existing_opts=$(expr "$cur" : '\(.*,\)')
|
||||||
if [[ $existing_opts ]]
|
if [[ $existing_opts ]]
|
||||||
then
|
then
|
||||||
COMPREPLY=( "${COMPREPLY[@]/#/${existing_opts}}" )
|
COMPREPLY=( "${COMPREPLY[@]/#/${existing_opts}}" )
|
||||||
fi
|
fi
|
Loading…
Reference in New Issue