Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Bug path completion chsh -s
On Aug 22, 12:40am, qcd wrote:
}
} > chsh -s <tab>
}
} in normal shellproposes a path list but in zsh that does not work.
What is "normal shell"? Bash? What version? Are you on a single-user
system you set up yourself, or are you at a school or business where an
administrator has pre-configured the "normal shell"?
Also, chsh has different syntax on different OS's: On MacOS it's an
alias for chpass; on Ubuntu it only has --help and --shell options
(and their -h -s counterparts); on RHEL it has several options and
uses -u instead of -h for --help, and adds -l for --list, both of
which conflict with chpass on MacOs; and so on. So "please fix" is
a rather open-ended request.
Oh well, never mind. Here's something for RHEL; perhaps you can figure
out how to fix it for your local environment, or just remove everything
except -s, given that's the one thing they all seem to have in common.
---- 8< ---- name this _chsh and put in an fpath directory ---- 8< ----
#compdef chsh
local -a opts
opts=(-s -l -u -v --shell --list-shells --help --version)
_arguments : \
"($opts)-s[Specify your login shell]:shell:($(</etc/shells))" \
"($opts)--shell[Specify your login shell]:shell:($(</etc/shells))" \
"($opts)-l[Print shells in /etc/shells]" \
"($opts)--list-shells[Print shells in /etc/shells]" \
"($opts)-u[Print a usage message and exit]" \
"($opts)--help[Print a usage message and exit]" \
"($opts)-v[Print version information and exit]" \
"($opts)--version[Print version information and exit]"
---- 8< ---- snip ---- 8< ---- -------- ---- 8< ---- snip ---- 8< ----
Maybe somebody else can remind me if there's an easier way to indicate
to _arguments that all the arguments are mutually exclusive. (RedHat
chsh accepts more than one but only uses the first one it encounters.)
Messages sorted by:
Reverse Date,
Date,
Thread,
Author