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
|
||||
|
||||
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
|
||||
# OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
if [[ -w /dev/zfs ]]; then
|
||||
__ZFS_CMD="zfs"
|
||||
__ZPOOL_CMD="zpool"
|
||||
else
|
||||
__ZFS_CMD="sudo zfs"
|
||||
__ZPOOL_CMD="sudo zpool"
|
||||
fi
|
||||
__ZFS_CMD="@sbindir@/zfs"
|
||||
__ZPOOL_CMD="@sbindir@/zpool"
|
||||
|
||||
# Disable bash's built-in hostname completion, as this makes it impossible to
|
||||
# provide completions containing an @-sign, which is necessary for completing
|
||||
|
@ -198,7 +193,7 @@ __zfs_complete_multiple_options()
|
|||
|
||||
COMPREPLY=($(compgen -W "$options" -- "${cur##*,}"))
|
||||
local existing_opts=$(expr "$cur" : '\(.*,\)')
|
||||
if [[ $existing_opts ]]
|
||||
if [[ $existing_opts ]]
|
||||
then
|
||||
COMPREPLY=( "${COMPREPLY[@]/#/${existing_opts}}" )
|
||||
fi
|
Loading…
Reference in New Issue