aboutsummaryrefslogtreecommitdiffhomepage
path: root/share/functions
diff options
context:
space:
mode:
Diffstat (limited to 'share/functions')
-rw-r--r--share/functions/__fish_print_service_names.fish14
1 files changed, 9 insertions, 5 deletions
diff --git a/share/functions/__fish_print_service_names.fish b/share/functions/__fish_print_service_names.fish
index 8b2926ed..e216b750 100644
--- a/share/functions/__fish_print_service_names.fish
+++ b/share/functions/__fish_print_service_names.fish
@@ -1,9 +1,13 @@
function __fish_print_service_names -d 'All services known to the system'
- if test -d /run/systemd/system
- command systemctl list-units -t service | cut -d ' ' -f 1 | grep '\.service$' | sed -e 's/\.service$//'
- else if type -f rc-service 2> /dev/null
+ if test -d /run/systemd/system # Systemd systems
+ # For the `service` command, this needs to be without the type suffix
+ # on Debian at least
+ __fish_systemctl_services | string replace -r '.service$' ''
+ else if type -f rc-service ^/dev/null # OpenRC (Gentoo)
command rc-service -l
- else
- command ls /etc/init.d
+ else if test -d /etc/init.d # SysV on Debian and other linuxen
+ string replace '/etc/init.d/' '' -- /etc/init.d/*
+ else # Freebsd
+ command service -l
end
end