util-linux/bash-completion/nsenter
igo95862 01a6d803b5
Add --user-parent option to nsenter
When this option is used nsenter will fetch the parent user
namespace from any namespace file descriptors available.

It can be combined with existing `--user` option in which case
the parent user namespace will be fetched from the user namespace
and replace it.

The usecase of this option is when a user namespace that owns
the other type namespaces we want to switch to is not actually
bound to any process. Without using ioctl it is impossible to
acquire namespace file descriptor. For example, bubblewrap
`bwrap` command creates unbinded user namespace when `--dev`
option is used.
2023-06-23 00:26:13 +06:00

68 lines
1.2 KiB
Text

_nsenter_module()
{
local cur prev OPTS
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
case $prev in
'-S'|'--uid')
COMPREPLY=( follow $(compgen -W "uid" -- $cur) )
return 0
;;
'-G'|'--gid')
COMPREPLY=( follow $(compgen -W "gid" -- $cur) )
return 0
;;
'-t'|'--target')
local PIDS
PIDS=$(cd /proc && echo [0-9]*)
COMPREPLY=( $(compgen -W "$PIDS" -- $cur) )
return 0
;;
'-h'|'--help'|'-V'|'--version')
return 0
;;
esac
case $cur in
'=')
# FIXME: --root and --wd should use get only
# directories as compgen output. If $cur is
# overwrote the same way as below in case segment
# for $prev the command-line will get mangled.
cur=${cur#=}
;;
-*)
OPTS="
--all
--target
--mount=
--uts=
--ipc=
--net=
--pid=
--cgroup=
--user=
--user-parent
--time=
--setuid
--setgid
--keep-caps
--preserve-credentials
--root=
--wd=
--wdns=
--env
--no-fork
--help
--version
"
COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
return 0
;;
esac
local IFS=$'\n'
compopt -o filenames
COMPREPLY=( $(compgen -f -- $cur) )
return 0
}
complete -F _nsenter_module nsenter