Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Ruby Version Manager (RVM) installed like so:

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

I understand what first < mean (feeds bash script to bash interpreter), I'm confused with <(...) part. So, what parentheses do here and the less than sign. In which cases we can use same syntax?

I tried to dig on the internet, found this SO question http://stackoverflow.com/questions/2188199/bash-double-or-single-bracket-parentheses-curly-braces and this question on ubuntuforums: http://ubuntuforums.org/showthread.php?p=7803008 But still have no idea why we use those parentheses and why we use input redirection twice.

bash < curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer

ain't the same?

Thanks.

share|improve this question
up vote 6 down vote accepted

It's process substitution. It feeds the output of the command into a FIFO that can be read from like a normal file.

share|improve this answer

It means "run the command inside the brackets, and return a filename that represents the standard output of that command here".

So, that translates to two commands:

curl ... > something
bash -s stable < something

...where "something" is the magic. (Typically, /dev/fd/... or a pipe.)

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .