sh | A shell parser, formatter, and interpreter with bash support; includes shfmt | Interpreter library

 by   mvdan Go Version: v3.6.0 License: BSD-3-Clause

kandi X-RAY | sh Summary

kandi X-RAY | sh Summary

sh is a Go library typically used in Utilities, Interpreter applications. sh has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

A shell parser, formatter, and interpreter. Supports POSIX Shell, Bash, and mksh. Requires Go 1.16 or later.

            kandi-support Support

              sh has a medium active ecosystem.
              It has 5932 star(s) with 310 fork(s). There are 58 watchers for this library.
              It had no major release in the last 12 months.
              There are 82 open issues and 641 have been closed. On average issues are closed in 94 days. There are 3 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of sh is v3.6.0

            kandi-Quality Quality

              sh has 0 bugs and 0 code smells.

            kandi-Security Security

              sh has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              sh code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              sh is licensed under the BSD-3-Clause License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              sh releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.
              It has 26364 lines of code, 746 functions and 62 files.
              It has high code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of sh
            Get all kandi verified functions for this library.

            sh Key Features

            No Key Features are available at this moment for sh.

            sh Examples and Code Snippets

            No Code Snippets are available at this moment for sh.

            Community Discussions


            NPM install task failing in Azure Devops, same code worked previously
            Asked 2022-Mar-12 at 12:38

            I have yaml pipeline running a build in Azure Devops. The Npm@1 task has started failing this morning. npm install works locally with npm version 6.14.5 and it's all green lights on npm Status.



            Answered 2021-Dec-02 at 13:14

            I still don't know why this started failing all of a sudden but I have resolved the problem by updating node-sass to version 6.0.1.



            WARNING: Running pip as the 'root' user
            Asked 2022-Feb-24 at 01:59

            I am making simple image of my python Django app in Docker. But at the end of the building container it throws next warning (I am building it on Ubuntu 20.04):



            Answered 2021-Aug-29 at 08:12

            The way your container is built doesn't add a user, so everything is done as root.

            You could create a user and install to that users's home directory by doing something like this;



            Terraform AWS Provider Error: Value for unconfigurable attribute. Can't configure a value for "acl": its value will be decided automatically
            Asked 2022-Feb-15 at 13:50

            Just today, whenever I run terraform apply, I see an error something like this: Can't configure a value for "lifecycle_rule": its value will be decided automatically based on the result of applying this configuration.

            It was working yesterday.

            Following is the command I run: terraform init && terraform apply

            Following is the list of initialized provider plugins:



            Answered 2022-Feb-15 at 13:49

            Terraform AWS Provider is upgraded to version 4.0.0 which is published on 10 February 2022.

            Major changes in the release include:

            • Version 4.0.0 of the AWS Provider introduces significant changes to the aws_s3_bucket resource.
            • Version 4.0.0 of the AWS Provider will be the last major version to support EC2-Classic resources as AWS plans to fully retire EC2-Classic Networking. See the AWS News Blog for additional details.
            • Version 4.0.0 and 4.x.x versions of the AWS Provider will be the last versions compatible with Terraform 0.12-0.15.

            The reason for this change by Terraform is as follows: To help distribute the management of S3 bucket settings via independent resources, various arguments and attributes in the aws_s3_bucket resource have become read-only. Configurations dependent on these arguments should be updated to use the corresponding aws_s3_bucket_* resource. Once updated, new aws_s3_bucket_* resources should be imported into Terraform state.

            So, I updated my code accordingly by following the guide here: Terraform AWS Provider Version 4 Upgrade Guide | S3 Bucket Refactor

            The new working code looks like this:



            Cannot set up a conda environment with python 3.10
            Asked 2022-Jan-31 at 10:35

            I am trying to set up a conda environment with python 3.10 installed. For some reason, no install commands for additional packages are working. For example, if I run conda install pandas, I get the error:



            Answered 2021-Oct-08 at 08:42

            Thats a bug in conda, you can read more about it here:

            Right now there is a PR to fix it but its not a released version. For now, just stick with



            How to setup lint-staged for Vue projects?
            Asked 2021-Dec-30 at 10:10

            I created a new Vue3 app using the Vue CLI and selected Prettier for my linter config. I want to use commitlint, husky and lint-staged to validate commit messages and lint the code before pushing it.

            What I did

            Based on I setup commitlint with husky



            Answered 2021-Dec-30 at 10:10
            Update regarding the comments Other lint-staged syntaxes

            I've suggested "**/*.{js,vue}": ["npm run lint:js:fix"], first of, lint:js:fix is subjective and up to you. This is what Kent C Dodds is using, so I'm just naming it in the same way.

            But you could totally have lint:watermelon-potato-hehe instead, doesn't matter.

            Now, about your propositions:

            1. "**/*.{vue,js,jsx,ts,tsx}": "npm run lint", this one is targeting more extensions, which is totally fine. You may not really use .tsx/.jsx since it's not really popular among Vue devs.
              About .ts itself, it may probably work good enough (maybe you'll need to add some plugins to your ESlint configuration). I'm not into TS so I can't really help on this one but it's out of the husky/lint-staged scope anyway.
              Last time I started a Vue3 project, I've used Vitesse which has some nice defaults with TS, this may be a good start for you maybe.

            As for the second part, since I like to setup my own ESlint config, with some simple and well documented API, we're using eslint --ext .js,.vue --fix. That way I'm sure of what is happening and how to troubleshoot it if needed.
            vue-cli-service lint may be a good default package aimed towards Vue with some defaults, I'm not sure what's inside it and even if it's probably just an ESlint with some baked-in configuration, again we prefer to make our own Vue configuration with vanilla ESlint.

            So yeah, if you need to go fast, use vue-cli-service lint for some quick linting, if you want to have a better flow in your project and want to fine grain your config, use vanilla ESlint, you'll get less trouble overall IMO.

            1. "**/*.{vue,js,jsx,ts,tsx}": "eslint --ext .vue,.js,.jsx,.ts,.tsx --fix". On the right side, we globally have the same lint:js:fix scripts but with additional extensions.

            So, you may ask why are we even writing the extensions on the left side for lint-staged and on the right side for lint:js:fix? I'd answer that those are not really needed on the right side (AFAIK), because lint-staged will only run the command to the left list of extensions.
            Here, we wanted to be more explicit about the exact extensions we're targeting and also, it enables you to run npm run lint:js:fix in your CLI at any given point without getting errors on files ESlint is not handling (.txt, .json, .md, .jpg etc...).
            So it could maybe be removed (not sure), fastest way to be sure is to try!

            1. "**/*.{vue,js,jsx,ts,tsx}": "eslint --fix", this one may work fine as explained in the previous paragraph. Didn't tried it myself thought.
            What about the other extensions?

            Regarding .html, you should not have a lot of those in your Vue project. You could use the W3C validator to check for any errors if you really need it.
            If you're speaking about your HTML in the template tags in your .vue files, those will be ESlint'ed properly. If you setup a Prettier on top of it, you will also get some nice auto-formatting which is really awesome to work with (once your team has agreed on a .prettierrc config).

            Regarding .json files, those are not handled by ESlint. ESlint is only for JavaScript-ish files. If you want to lint/format your .json or even any other extensions at all, you can aim towards NPM, find a package that suits your team's needs and add it to your chain like "**/*.json": ["npm run lint-my-json-please"] and you should be good!

            At the end, husky + lint-staged are not doing anything special really. They are tools to automate what you could write yourself in a CLI, so if it's working when done manually and you're happy with the result, you can put it in your config but you need to first found what the proper package and it's configuration.

            In your package.json, you could have the following



            NestJS - Expected undefined to be a GraphQL schema
            Asked 2021-Dec-29 at 22:13

            I am trying to setup a very small GraphQL API using NestJS 8. I installed all required redepndencies from the documentation, but when I start the server, I get this error:



            Answered 2021-Nov-16 at 02:14

            I was receiving the same errors. After debugging step by step, the answer is that @nestjs/graphql@9.1.1 is not compatible with GraphQL@16.

            Specifically, GraphQL@16 changed the gqaphql function, as called from within graphqlImpl, to only support args without a schema:



            xcrun: error: SDK "iphoneos" cannot be located
            Asked 2021-Dec-15 at 20:35

            I'm not experienced so I can't really pinpoint what is the problem. Thanks for the help.

            I cloned this repo:

            And was trying to follow the steps below:

            Clone the repo

            git clone

            Navigate to clonned folder and Install dependencies

            cd react-native-starter && yarn install

            Install Pods

            cd ios && pod install

            When I got to the pod install I'm getting that error.



            Answered 2021-Jul-28 at 18:31

            I think your pod install working fine and has done its job. You need to set up iPhone SDK on your mac then try to run cd ../ && react-native run-ios.

            Follow this guide : React Native Environment set up on Mac OS with Xcode and Android Studio



            How to install PHP 7.2 on macOS Big Sur using Homebrew?
            Asked 2021-Dec-11 at 07:16

            I want to install PHP 7.2 on MacBook Pro M1, macOS Big Sur (11.5.2).

            I already read an article (How To Install a PHP 7.2 on macOS 10.15 Catalina Using Homebrew and PECL), but it doesn't work for me.

            I used Homebrew to install PHP 7.2 using this command:



            Answered 2021-Dec-11 at 03:40

            Since PHP 7.2 is not supported anymore, it's got delisted from the Hombrew core repository.

            You've to find a third-party repository that still contains an older PHP version, such as the shivammathur/php repository.

            You need to tap the repository like this in your Homebrew:



            Unable to install Jenkins on Ubuntu 20.04
            Asked 2021-Dec-08 at 05:56

            I am trying to install Jenkins on my Ubuntu EC2 instance and I performed the following steps to install but couldn't install it.

            $sudo apt update $sudo apt install openjdk-8-jdk $wget -q -O - | sudo apt-key add - $sudo sh -c 'echo deb binary/ > /etc/apt/sources.list.d/jenkins.list' $sudo apt update <--------- (Here I am getting below error)

            root@ip-172-31-44-187:~# sudo apt update Ign:1 binary/ InRelease Err:2 binary/ Release Certificate verification failed: The certificate is NOT trusted. The certificate chain uses expired certificate. Could not handshake: Error in the certificate verification. [IP: 443] Hit:3 focal InRelease Get:4 focal-updates InRelease [114 kB] Get:5 focal-security InRelease [114 kB] Get:6 focal-backports InRelease [101 kB] Reading package lists... Done E: The repository ' binary/ Release' does not have a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.



            Answered 2021-Oct-09 at 07:17

            Yeah , I had same problem with this from yesterday , I think this is after yesterday's new update in jenkins 2.303.2 Lts .

            Just do , apt upgrade , apt update, apt get install jenkins -y .

            It worked for me .



            How can I get notified when money has been sent to a particular Bitcoin address on a local regtest network?
            Asked 2021-Nov-18 at 19:39

            I want to programmatically detect whenever someone sends Bitcoin to some address. This happens on a local testnet which I start using this docker-compose.yml file.

            Once the local testnet runs, I create a new address using



            Answered 2021-Nov-18 at 19:39

            I haven't tested your full setup with electrumx and the ethereum stuff present in your docker-compose file, but regarding your problem, the following steps worked properly, and I think it will do as well in your complete setup.

            I ran with docker a bitcoin node based in the ulamlabs/bitcoind-custom-regtest:latest image you provided:


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install sh

            To parse shell scripts, inspect them, and print them out, see the syntax examples. For high-level operations like performing shell expansions on strings, see the shell examples.


            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
          • HTTPS


          • CLI

            gh repo clone mvdan/sh

          • sshUrl


          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Interpreter Libraries


            by v8


            by micropython


            by RustPython


            by robertkrimen


            by mvdan

            Try Top Libraries by mvdan


            by mvdanGo


            by mvdanGo


            by mvdanGo


            by mvdanGo