Description
According to subshell release note, if the complete mode is set to either 'FIRST' or 'SUBSHELL' and you type the TAB key when you are in a subshell, the completion will display only the commands of the current subshell.
I have two subshells, auth and auth-ldap. Each has different commands.
auth:show
auth-ldap:update
auth-ldap:delete
The complete mode is set to 'FIRST'.
When I am in subshell 'auth' and press tab, I expect to see only the 'show' command. However, 'show', 'delete' and 'update' are displayed in the 'auth' subshell.
CAUSE
After looking into the source code of karaf 3.0.1, there is a bug in method 'complete' in 'org.apache.karaf.shell.console.completer.CommandsCompleter'. If the key of a completer starts with the current subshell name, the completer will be added to the matching completer list. For my case, the current subshell name 'auth' partially matches the keys, "auth-ldap:update" and "auth-ldap:delete" , of completers and incorrect commands,"update" and "delete" are displayed in "auth" subshell.