I ran the same commands on two different Ubuntu 14.04 x64 boxes, but got different results:

Ubuntu 1:

# join -1 2 -2 1 <(echo "st21 ppp0") <(echo "ppp0 9581720 213155315")
join: /dev/fd/63: No such file or directory

Ubuntu 2:

# join -1 2 -2 1 <(echo "st21 ppp0") <(echo "ppp0 9581720 213155315")
ppp0 st21 9581720 213155315

So what's wrong with the first output?

closed as off-topic by Gilles, Jeff Schaller, don_crissti, Archemar, Scott Jun 2 '16 at 5:31

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions describing a problem that can't be reproduced and seemingly went away on its own (or went away when a typo was fixed) are off-topic as they are unlikely to help future readers." – Gilles, Jeff Schaller, don_crissti, Archemar, Scott
If this question can be reworded to fit the rules in the help center, please edit the question.

  • Problem got fixed after a reboot of Ubuntu 1. But what happened? – Qian Chen Jun 1 '16 at 17:59
  • 1
    It's hard to debug what happened. Maybe the keywords process substitution and anonymous pipe can help you with your google journey. – PaulSmecker Jun 1 '16 at 18:21

The most likely explanation is that Ubuntu1 didn't have /dev/fd (normally a symlink to /proc/self/fd. and normally created by udev).

bash needs /dev/fd for process substitution to work.

After rebooting, udev did what it was supposed to do and created the symlink.

BTW, when you install bash on FreeBSD, it prompts you to add the following to /etc/fstab (not needed on linux, because it's handled by udev instead)

fdesc   /dev/fd     fdescfs     rw  0   0
  • So could it be that the /dev/fd had been mistakenly removed? – Qian Chen Jun 2 '16 at 2:56
  • yes, that's definitely possible. – cas Jun 2 '16 at 2:58

Not the answer you're looking for? Browse other questions tagged or ask your own question.