In addition to my own computer, I sometimes use an Ubuntu cluster at my school. Rather than manually keep my .bashrc's in sync, I would like to make the school cluster's .bashrc source my personal .bashrc from DropBox via a URL. However, when I naively try source http://myurl, I just get an error: http://myurl: No such file or directory. How can I can get bash to source from a script located online?

Worst case, I could curl to a named pipe and source that. Is there anything more elegant?


You can use process substitution with source:

source <(curl -s http://example.com/foo)

Note: I consider directly running code retrieved over the internet to be a serious security risk. It's probably less risky if this is done over an internal network (depending on its overall security).

  • Clever! Good point though that an attacker could easily feed me any code they want. – AlcubierreDrive Mar 9 '11 at 14:49
  • 1
    Works on Linux, fails on OSX. Writing to a tempfile for OSX instead. – Edward Anderson Sep 8 '14 at 20:29
  • @nilbus: According to this, you might try source <(curl -s http://example.com/foo | iconv -f windows-1251) – Dennis Williamson Sep 8 '14 at 20:57
  • That got rid of the error, but the script didn't run still on OSX. – Edward Anderson Sep 9 '14 at 0:31
  • The part of this that jumps out at me is the fact that I can set a variable from^H^H^H^Hin the main script and call that variable without having to redeclare it in the sourced script. curl <file> | /bin/bash won't allow that without exporting the variables. – dafydd Dec 5 '15 at 4:32

Can't you just use

curl http://example.com/whatever.sh | bash 
  • That works and it's what I'm currently doing, but I was wondering if there's a more elegant way. But maybe this is the best, so if nothing turns up soon I'll accept your answer. – AlcubierreDrive Mar 9 '11 at 14:12
  • Also, note that this is going in my .bashrc, so technically your solution is infinite recursion. ;) But I know what you meant. – AlcubierreDrive Mar 9 '11 at 14:45
  • 5
    Piping commands to bash will execute them in a separate process, which makes this method unusable for executing bashrc. – user1686 Mar 9 '11 at 15:15
  • 2
    Depends on what the commands are - but yes, sorry I agree – John Burton Mar 9 '11 at 16:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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