Comments (9)
Well, now that you've said that, all I can do now is post this question to bash-language-server.
from shellcheck.
@moonfruit
My opinion: shellcheck already detect the shell by itself in multiple ways so there isn't any need for the server to suggest it (even more so if the suggestions are wrong).
from shellcheck.
I'm not the maintainer of bash-language-server
, I can't decide what it will do.
I just made a suggestion.
from shellcheck.
Not sure this is a shellcheck problem really.
Would it be possible to add the shell directive at the top of the file?
brother ~$ cat /tmp/test.sh
#!/bin/sh
myvar=(1 2 3)
echo "${myvar[1]}"
brother ~$ shellcheck --norc /tmp/test.sh
In /tmp/test.sh line 3:
myvar=(1 2 3)
^-----^ SC3030 (warning): In POSIX sh, arrays are undefined.
In /tmp/test.sh line 5:
echo "${myvar[1]}"
^---------^ SC3054 (warning): In POSIX sh, array references are undefined.
For more information:
https://www.shellcheck.net/wiki/SC3030 -- In POSIX sh, arrays are undefined.
https://www.shellcheck.net/wiki/SC3054 -- In POSIX sh, array references are...
brother ~$ shellcheck --norc --shell=bash /tmp/test.sh
brother ~$ cat /tmp/test.sh
#!/bin/sh
# shellcheck shell=bash
myvar=(1 2 3)
echo "${myvar[1]}"
brother ~$ shellcheck --norc --shell=bash /tmp/test.sh
brother ~$ shellcheck --norc /tmp/test.sh
from shellcheck.
For example:
test.sh:
#!/bin/sh
# shellcheck shell=bash
echo -e "abc"
And check with shellcheck
$ shellcheck test.sh
$ shellcheck --shell=sh test.sh
In test.sh line 3:
echo -e "abc"
^-- SC3037 (warning): In POSIX sh, echo flags are undefined.
For more information:
https://www.shellcheck.net/wiki/SC3037 -- In POSIX sh, echo flags are undef...
You can find that the command line option override the shell directive defined in the file.
from shellcheck.
bash-language-server always sets --shell=
to what it thinks the shell is. I think it should set it to a fallback shell type to allow # shellcheck shell=bash
to work. But shellcheck
does not have this function.
from shellcheck.
maybe that should stop doing such things then?
from shellcheck.
It seems to me that a small change on both sides would be the feature that still works. Otherwise, an external tool may be needed to parse the shellcheck
directive to solve the problem more perfectly.
from shellcheck.
I don't think this need to get all crazy but it looks like bash-lang-server is (lack of words) abusing the shell directive. We developers and and end consumers can set those options ourselves if needed.
from shellcheck.
Related Issues (20)
- SC2034 doesn't consider local function definitions to define new scopes
- Please separate the issue of unused functions from SC2317 (Command appears to be unreachable) HOT 11
- `require-double-brackets` doesn't work in BusyBox `sh` even though `[[` is supported HOT 2
- SC2115 fires when it is statically verifyable that the variable cannot be empty HOT 2
- SC2221/SC2222 fires for non-exhaustive wildcard patterns HOT 1
- SC2154 var is referenced but not assigned not triggered if used within an array HOT 1
- SC2251 - add ${PIPESTATUS[0]} check to exceptions HOT 1
- [Bug / regression?] In file ignore directives (# shellcheck disable=<check_id>) are not specific & disable all checks instead (not just check_id) HOT 1
- SC2015 inconsistent behavior HOT 2
- Skip SC2015 when it end with: || true
- Please support all alias for busybox shell equally
- SC2154 from strict bash mode example using trap
- SC2086 false positive on readonly integer variable
- SC2004 false positive on assignment to array position HOT 1
- Missing SC2166 URL in summary section HOT 1
- SC2094, SC2035, SC2034, SC2205, SC2283 ternary arithmetic false positives
- RFE: variant of `source=` directive that supports globbing
- SC1090 is sometimes not raised HOT 1
- [Feature request][Bash] Add rules to provide tips on adding local, or readonly status to variables
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from shellcheck.