Вкладка странное завершение javac и на пути к классу
Команда javac имеет странное завершение вкладки с -cp и -classpath. У меня сложилось впечатление, что -cp - это псевдоним -classpath. Однако, когда я нажимаю tab после флага -classpath, я получаю файлы .jar, как и ожидалось. Когда я нажимаю tab с -classpath, я получаю:
javac -classpath <tab>
javac -classpath lib/ <tab>
javac -classpath lib/test.jar
И
javac -classpath .: <tab>
javac -classpath .:lib/ <tab>
javac -classpath .:lib/test.jar
Альтернативно, с -cp
javac -cp <tab>
javac -cp lib/ <tab>
javac -cp lib/
И
javac -cp .: <tab>
javac -cp .:
Я использую bash в ubuntu 16.04 и javac 1.8.0_111, если это уместно.
1 ответ:
Эта функциональность реализована пакетом
bash-completion. Вы можете найти код для соответствующей функции следующим образом:$ complete -p javac complete -F _javac javac # the function `_javac' is used to complete the command `javac' $ declare -f _javac . # this will print the function codeТам вы увидите, что соответствующий код:
Таким образом, если вы хотите, вы можете взять полное определениеcase $prev in ... -classpath|-bootclasspath|-sourcepath|-extdirs) ..._javac()из командыdeclare -f, изменить его, чтобы включить-cpв этот операторcase, и добавить его в конец вашего файла bash init (.bashrcили.bash_profileи т. д.). Затем, когда вы запускаете новую оболочку, новая_javac()будет использоваться для завершенияjavacкоманды.Кроме того, код для последнего выпуска также доступен для просмотра наgithub . Другие завершения команды, определенные там (
java,javadoc) поймите флаги короткой руки, поэтому я уверен, что запрос на вытягивание с исправлением этой проблемы будет приветствоваться.
обновление: теперь этоисправлено в исходном коде.