summaryrefslogtreecommitdiffstats
path: root/shell-completion/bash/systemd-nspawn
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-10-20 07:48:02 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-10-20 09:58:00 +0200
commit4e9183059a5738cd19a8bee76189889087c0610e (patch)
tree29b90ff812f87e547a8a04f8a947b2453a412244 /shell-completion/bash/systemd-nspawn
parentmachinectl: allow --max-addresses=0 (diff)
downloadsystemd-4e9183059a5738cd19a8bee76189889087c0610e.tar.xz
systemd-4e9183059a5738cd19a8bee76189889087c0610e.zip
shell-completion/zsh: silence error when machinectl is not installed
This fixes a few unrelated issues: - when ENABLE_MACHINED is false, machinectl is not installed, but _sd_machines is still used in a few places that want to complete -M and such. Also, bash completion calls machinectl in various places. Make missing machinectl mean "no machines" in this case, so that no error is generated in the callers. - machinectl list --full would print multiple lines of output per machine, breaking grep, issue introduced in e2268fa43742ece4a5cdc2e93f731b2bb2fcc883. Using --max-addresses=1 would fix the issue, but let's use --max-addresses=0 because we now can. - the lists used in various places were slightly different for no good reason. - don't use a subshell if not necessary. The code for bash still uses the same combined list of images and running machines for various commands. The zsh code uses images for start/clone, and running machines for the rest. Maybe something to fix in the future. Replaces #25048.
Diffstat (limited to 'shell-completion/bash/systemd-nspawn')
-rw-r--r--shell-completion/bash/systemd-nspawn4
1 files changed, 3 insertions, 1 deletions
diff --git a/shell-completion/bash/systemd-nspawn b/shell-completion/bash/systemd-nspawn
index fbc953f56e..cc3d2f6598 100644
--- a/shell-completion/bash/systemd-nspawn
+++ b/shell-completion/bash/systemd-nspawn
@@ -35,7 +35,9 @@ __get_slices() {
__get_machines() {
local a b
- machinectl list --full --no-legend --no-pager | { while read a b; do echo " $a"; done; };
+ { machinectl list --full --max-addresses=0 --no-legend --no-pager 2>/dev/null; echo ".host"; } | \
+ { while read a b; do echo " $a"; done; } | \
+ sort -u
}
__get_env() {