Skip to content

Instantly share code, notes, and snippets.

@typeoneerror
Created January 11, 2012 20:18
Show Gist options
  • Select an option

  • Save typeoneerror/1596565 to your computer and use it in GitHub Desktop.

Select an option

Save typeoneerror/1596565 to your computer and use it in GitHub Desktop.
Bash build system for running currently open script in Sublime Text 2
{
"cmd" : ["$file"],
"selector" : "source.shell",
"shell" : "bash"
}
@shmup

shmup commented Apr 16, 2013

Copy link
Copy Markdown

@Xavdidtheshadow chmod +x script.sh

@alex1704

Copy link
Copy Markdown

cool)

@andrewheiss

Copy link
Copy Markdown

This doesn't work if the script is in a folder with spaces in its name. Building ~/Desktop/Test Folder/test.sh will fail:

/bin/sh: ~/Desktop/Test: No such file or directory
[Finished in 0.0s with exit code 127]

@andrewheiss

Copy link
Copy Markdown

However, it seems like you can fix that by modifying the build system slightly. Instead of specifying "shell": "bash", you can manually pipe it through bash, like so:

{
    "cmd"       : ["bash", "$file"],
    "selector"  : "source.shell"
}

@gaiatronik

Copy link
Copy Markdown

Thank you Andrew, that worked perfectly.

@raisen

raisen commented Sep 24, 2013

Copy link
Copy Markdown

+1

@mehikmat

Copy link
Copy Markdown

I run a sh file using above build script and run smoothly but waits at some point and doesn't take input if I type.

rm: remove write-protected regular file `/etc/udev/rules.d/70-persistent-net.rules'?

I typed y but didn't take any action.

Any Idea?

@farinspace

Copy link
Copy Markdown

In sublime text 3, I am using the following:

{
    "cmd"       : ["$file"],
    "selector"  : "source.shell",
    "path"      : "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"
}

Note: I had to add "path" above, as the terminal in Sublime was using a different PATH, my other attempts at adjusting my PATH were unsuccessful. Also see the build system reference for more details.

@MadSc1

MadSc1 commented Jan 12, 2015

Copy link
Copy Markdown

I also had to add the line as suggested above,
"path" : "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"
Even though I already set up my symbolic links in terminal properly = Yes, I can run "python3" from any location...
To hammer it in farther... When I type
"echo $PATH"
it returns
"/Library/Frameworks/Python.framework/Versions/3.4/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/Users/Hendrix/bin"

Yes, I am new at development. However, from logical deduction I ponder if sublime text 3 is not using ~/.bash_profile, or the system paths(??did I say that right?) as we might be drawn to assume... Then again... I am still at noob level, ,, but ya, adding the "path" line as suggested by 'farinspace' did the trick for me - OS X 10.9.5

@muktyas

muktyas commented Aug 6, 2015

Copy link
Copy Markdown

Hi All, I new on sublime. How to add that code into sublime?
Edit:
Okay, tools, build system, new build system.. and replace all content to andrewheiss's code. Thanks.

@hanie2014

Copy link
Copy Markdown

thanks

@pudovmaxim

pudovmaxim commented Oct 5, 2016

Copy link
Copy Markdown

For some language (for example russian) whitespace symbols can be found in path:
/home/username/Рабочий стол/test.sh
and "cmd" : ["$file"], not works correctly. I recommend add quotes and chmod for set permissions
"cmd" : ["chmod +x \"$file\" && \"$file\"" ],

@JosjaVanBever

JosjaVanBever commented Dec 1, 2018

Copy link
Copy Markdown

If one wants to also have a "debug mode", a simple variant is

{
    "cmd": ["bash", "$file"],
    "selector": "source.shell",

    "variants":
    [
        {
            "name": "Debug",
            "shell_cmd": "/bin/bash -xv \"${file}\""
        }
    ]
}

note the escaped quotation marks to avoid issues with spaces etc. in the file name

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment