It's not for everyone, but the Unix/BSD/Linux shell is still my favorite command invocation environment. Despite their simplicity, pipelines are a really handy way to pass data between programs when solving certain kinds problems. It also provides a cheap way of providing some parallel processing.
Maybe this is implicitly assumed, but a terminal multiplexer such as tmux is also a useful utility for using unix as an IDE. For example, you can have a pane for your code in an editor like vim, and a pane for running your tests next to it, and maybe another pane for an interactive shell of your language. Lacking a consistent local development environment, tmux is indispensable when I ssh into into my remote development environment.
If using LLVM, you may want to debug with lldb instead. Also with gdb you can use the tui mode.<p>To read the environment variables used by a program you can use<p><pre><code> cat /proc/{pid}/environ
</code></pre>
update: Some of this overlaps with reverse engineering. I posted this comment yesterday about useful reverse engineering resources on Linux <a href="https://news.ycombinator.com/item?id=17342197" rel="nofollow">https://news.ycombinator.com/item?id=17342197</a>
I like Acme because it is built to facilitate using shell commands from within the editor. You can write scripts in any language you like and run them, which in some ways makes it the ultimate scriptable editor.<p>However, an IDE like IntelliJ brings so much to the table that it's hard to imagine working without it. I know I'm much more productive using it than Emacs or Acme or Vi or any other editor that integrates well with Unix.
But the idea of an OS in and of itself is the ultimate IDE, is it not? I can't say I like the idea of writing software without any system calls at my disposal.
tmux + cscope + a $CSCOPE_EDITOR script that starts $EDITOR in a new tmux window == awesome.<p>EDIT: Also, add nested tmux sessions to make it awesome++.