bash: джерело з URL


7

Окрім власного комп’ютера, я іноді використовую кластер Ubuntu у своїй школі. Замість того, щоб вручну підтримувати мої .bashrc синхронізованими, я хотів би зробити джерело .bashrc шкільного кластера моїм персональним .bashrc з DropBox за допомогою URL-адреси. Однак, коли я наївно намагатися source http://myurl, я просто отримую повідомлення про помилку: http://myurl: No such file or directory. Як я можу отримати баш на джерело зі скрипту, який знаходиться в Інтернеті?

Найгірший випадок, я міг би згорнутися до названої труби та створити це джерело. Чи є щось більш елегантне?

Відповіді:


12

Можна замінити процес за допомогою source:

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

Примітка. Я вважаю, що безпосередньо запущений код, отриманий через Інтернет, є серйозним ризиком для безпеки. Це, мабуть, менш ризиково, якщо це робиться через внутрішню мережу (залежно від її загальної безпеки).


Розумний! Хороший момент, хоча зловмисник міг легко подати мені будь-який код, який вони хочуть.
AlcubierreDrive

1
Працює в Linux, виходить з ладу на OSX. Запис у тимчасовий файл для OSX.
Едвард Андерсон

@nilbus: Відповідно до цього , ви можете спробуватиsource <(curl -s http://example.com/foo | iconv -f windows-1251)
Денніс Вільямсон

Це позбулося помилки, але сценарій не працював на OSX.
Едвард Андерсон

Частина цього, що вискакує у мене, полягає в тому, що я можу встановити змінну з ^ H ^ H ^ H ^ Hin головним сценарієм і викликати цю змінну, не потребуючи повторної декларування її в скрипті з джерелом. curl <file> | /bin/bashне дозволить цього без експорту змінних.
dafydd

-1

Ви не можете просто використовувати

curl http://example.com/whatever.sh | bash 

Це працює, і це я зараз роблю, але мені було цікаво, чи існує більш елегантний спосіб. Але, можливо, це найкраще, тому якщо незабаром нічого не з’явиться, я прийму вашу відповідь.
AlcubierreDrive

Також зауважте, що це відбувається в моєму .bashrc, тому технічно ваше рішення - нескінченна рекурсія. ;) Але я знаю, що ви мали на увазі.
AlcubierreDrive

4
Команди з bashконвеєрними програмами виконуватимуть їх в окремому процесі, що робить цей метод непридатним для виконання bashrc.
grawity

2
Залежить від того, які команди - але так, вибачте, я згоден
Джон Бертон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.