DEV Community

Aubrey Portwood
Aubrey Portwood

Posted on • Edited on

1

How to run commands in a sub-shell and suppress output in the background that's ZSH & shellcheck compatible

TLDR: This works:

( (
    bar
    foo

) 1>&- 2>&- & )
Enter fullscreen mode Exit fullscreen mode

So, basically, what this does is run a sub-shell then bury your commands in another sub-shell and closes all STDOUT being reported and is sent to the background. I honestly am still not sure how this works!


&!

Because I use shellcheck with my zsh scripts the following flagged an unknown error in shellcheck (because shellcheck does not support zsh at the moment) and it wouldn't lint the file:

() (

    foo
    bar

) &> /dev/null &!
Enter fullscreen mode Exit fullscreen mode

Specifically it was the &! that wasn't working (but is a valid ZSH directive to suppress background output). I would always get job output at the least using most of the suggestions e.g. on Stack Exchange. So, I went down a Googling-rabbit-hole with no answers, until I landed on:

https://www.baeldung.com/linux/run-multiple-commands-in-background

Which I then had to grok the horrible formatting and came up with the above that is Bash compatible to run commands in the background with no output!

🙌

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (3)

Collapse
 
aubreypwd profile image
Aubrey Portwood

Another update to use ) 1>&- 2>&- & ) today, as I still was getting output! See cyberciti.biz/faq/how-to-redirect-... on why I chose this. Really it's because it seems to just be working :)

Collapse
 
aubreypwd profile image
Aubrey Portwood

Updated to use ) > /dev/null & ) since I found output being present when using ) & )

Some comments may only be visible to logged-in visitors. Sign in to view all comments.

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs