11

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?

2 Answers 2

21

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).

9
  • Clever! Good point though that an attacker could easily feed me any code they want. Commented Mar 9, 2011 at 14:49
  • 1
    Works on Linux, fails on OSX. Writing to a tempfile for OSX instead. Commented Sep 8, 2014 at 20:29
  • @nilbus: According to this, you might try source <(curl -s http://example.com/foo | iconv -f windows-1251) Commented Sep 8, 2014 at 20:57
  • That got rid of the error, but the script didn't run still on OSX. Commented Sep 9, 2014 at 0:31
  • 1
    @Dennis Williamson: fixed by using source /dev/stdin <<< "$(curl -s http://xxx.sh)", it works fine on both!
    – Miao1007
    Commented Dec 14, 2016 at 10:53
-1

Can't you just use

curl http://example.com/whatever.sh | bash 
4
  • 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. Commented Mar 9, 2011 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. Commented Mar 9, 2011 at 14:45
  • 6
    Piping commands to bash will execute them in a separate process, which makes this method unusable for executing bashrc. Commented Mar 9, 2011 at 15:15
  • 2
    Depends on what the commands are - but yes, sorry I agree Commented Mar 9, 2011 at 16:24

You must log in to answer this question.

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