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

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 and this question on ubuntuforums: But still have no idea why we use those parentheses and why we use input redirection twice.

bash < curl -s

ain't the same?


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 .