Compatible with: IntelliJ IDEA PhpStorm WebStorm PyCharm RubyMine AppCode CLion GoLand DataGrip Rider MPS Android Studio
Sep 08, 2018
7 574 362
Bash language support for the IntelliJ platform.
Supports syntax highlighting, rename refactoring, documentation lookup, inspections, quickfixes and much more.

Download plugin

Recent change notes

Changes in version 1.6.13:
  • #515: Not a valid identifier in shell script (dynamic variable names with export command)
  • #328: Using ${#var} produces incorrect warning "Array use of non-array variable"
  • #517: Incorrect warning "Array use of non-array variable"
  • #505: Fixed "Lexer could not match input" error for redirect after here string
  • #508: Argument values of the mapfile/readarray built-in were parsed as variable names
  • #511: Pull request by contributor vn971.
  • #512: Arguments ${10} and up flagged as errors when using curly brackets

Changes in version 1.6.12:
  • #457: Unresolved Variable Warning on Linebreak
  • #459: Fixed formatting of redirects with process substitutions
  • #460: Parse commands separated by |&
  • #462: Unexpected Token w/ declare and some other constructs
  • #465: BashShebang NPE
  • #467: Deadlock in BashSupport
  • #468: Functions assumed to have curly brace body
  • #469: Support variables defined by `printf -v`
  • #473: Support heredocs where the end marker is followed by a backtick
  • #474: Support semicolon after command which starts a heredoc

Changes in version 1.6.11:
  • #394: Renaming a variable shows 'Renaming unknown type $1' in the dialog
  • #401: Parameter expansion parsing error
  • #404: Using array variable without quotes generates a warning "Simple use of array variable"
  • #411: NPE in OSUtil.findBestExecutable
  • #412: Syntax Errors on valid code involving regular expression
  • #433: BashCommandManipulator: Cannot modify a read-only file
  • #444: Formatter removes space after empty string variable assignment
  • #452: Concurrent modification in BashVarDefImpl
  • #453: A weird light blue background is seen over my code area
  • #454: Using "mapfile" results in "Array use of non-array variables"
  • #456: NPE in BashVarDefImpl

Changes in version 1.6.10:
  • #451: Fix stub exceptions triggered by BashSupport while looking for include files (Thanks to @kshchepanovskyi). If you include non-bash files, then this might break. Let me know in that case..
  • #450: If a script has an exit call on toplevel we assume that all following lines contain non-bash/binary data. The content after the exit command will be highlighed as binary data. Before an exception was thrown and IDEA had to be restarted.
  • #449: Don't warn on variable identifiers declared in an eval block
  • Removed "Build" step from default Bash run configuration

Changes in version 1.6.9:
  • #432: Unexpected token on correct line with here-string
  • #427: Wrong autoformatting for wrapped heredoc
  • #418: Fix to parsed structure of variable assignment lists

Changes in version 1.6.8:
  • #431: The arithmetic bitwise assignments are now correctly parsed.
  • #426: Fixed parsing of arithmetic operators "^", "^^", "," ",,"
  • #426: (Very) basic support to parse patterns in arithmetic expressions
  • #424: Error displaying the folding elements in the HERE-document when there are variables in the text
  • #420: Assignment chains in arithmetic expressions have to static replacement values (an exception was thrown for $((a=1,b=2,=3)), for example)
  • #419: Parsing error with double-pipe in subshell contained in list parenthesis

Changes in version 1.6.7:
  • #413: Fix variable and function resolving in files which are outside of a module content root
  • #409: Jump to function def does not work in language injected string literals
  • #408: All variables in injected language chunks are flagged as unresolved

Changes in version 1.6.6:
  • #391/#358: Removed maximum levels of chained comamnds in the parser

Changes in version 1.6.5:
  • #398: Error updating LexerEditorHighlighter, resulted in many error while working in a Bash script.
  • #399: Potential fix for java.lang.NoClassDefFoundError: BashIcons

Changes in version 1.6.4:
  • Sorry for the many releases!
  • #397: Tokens after a here string start were not always detected properly
  • Index version increased to avoid PSI index exceptions

Changes in version 1.6.3:
  • #395: Hotfix to make BashSupport work again with scripts containing errors
  • #396: Check for working directory only if the module is valid

Changes in version 1.6.2:
  • Increase stub index version to handle index vs. psi exceptions
  • Improved parsing to be more error resistant, functions and commands which contain faulty code will now be recognized more often
  • Handle line continuations in case pattern lists

Changes in version 1.6.1:
  • #361: Added support for the mapfile and readarray Bash builtin comamnds
  • #349: Support unicode characters in scripts, warn about invalid identifiers which include illegal characters
  • #392: Reformatting changes code in eval strings and redirect tokens
  • #388: Reformatting heredocs changes content
  • #350: Redirection in eval statement is flagged as error
  • #245: No possibly incorrect warnings about unused parameters if shift is used in the function inside of a loop.
  • #391: New inspection to highlighting unresolved, but globally registered variables (to have a separate highlighting level and inspection description)
  • #393: Update JFlex to the latest version
  • #357: Added a potential fix for the problem

Changes in version 1.6.0:
  • Compatible with builds >= 162.x, dropped support for builds 135.x to 161.x (Sorry! I'm unable to maintain 5 more branches.)
  • #389: Files with line continuations were not parsed properly and may break the whole project (might have broken your project!)
  • #377: NPE in UnregisterGlobalVariableQuickfix
  • #367: Fixed parsing of redirects in subshells inside of conditional commands, e.g. [[ $(< $1) ]]
  • #367: Fixed parsing of here-strings, e.g. "tr [:lower:] [:upper:] <<< [abc]"
  • #379: Undo "Register Global Variable" doesn't work
  • #368: Added debugging messages for arithmetic expressions
  • #383: Handle division by zero in arithmetic expressions and show a warning in the code
  • #388: References for files are now searched in the module content scope and not in the module scope.
  • Added support for the ## parameter expansion operator
  • #351: Added debug message for further diagnosis

Full changelog

General usage instructions

Github project: