7
3
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?
1Works on Linux, fails on OSX. Writing to a tempfile for OSX instead. – Edward Anderson – 2014-09-08T20:29:50.280
@nilbus: According to this, you might try
– Paused until further notice. – 2014-09-08T20:57:02.073source <(curl -s http://example.com/foo | iconv -f windows-1251)
That got rid of the error, but the script didn't run still on OSX. – Edward Anderson – 2014-09-09T00:31:06.120
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 – 2015-12-05T04:32:10.873fail on bash, success on ksh – Miao1007 – 2016-12-13T11:40:59.190
@Miao1007: It works in Bash. You provide no information to use to diagnose why you are having a failure. – Paused until further notice. – 2016-12-13T16:50:42.973
@Dennis Williamson: fixed by using
source /dev/stdin <<< "$(curl -s http://xxx.sh)"
, it works fine on both! – Miao1007 – 2016-12-14T10:53:42.683@EdwardAnderson The reason this syntax fails in OSX is because OSX is using
– wisbucky – 2019-09-25T21:20:07.303bash 3.2
, which does not support process substitution forsource
. It only works forbash 4.?
https://stackoverflow.com/questions/32596123/why-source-command-doesnt-work-with-process-substitution-in-bash-3-2/32596626#32596626Clever! Good point though that an attacker could easily feed me any code they want. – AlcubierreDrive – 2011-03-09T14:49:53.050