Як я можу встановити скрипт у каталог $ HOME / .bin (або $ HOME / bin) користувача і переконатися, що він знаходиться в їхньому PATH?


0

Редагувати: місця, де я сказав $ HOME / .bin Я мав би написати $ HOME / bin або будь-який еквівалент.

Тому у мене є скрипт bash, який я поширюю як клієнт для мого API. Поточна версія встановлюється таким чином curl -s http://api.blah.com/install | sudo sh. Я можу спробувати розібратися з шістьма різними системами управління пакунками, щоб вони могли просто apt-get або brew install в якийсь момент, але поки я збираюся з одним лайнером, оскільки я хочу, щоб це рішення працювало для декількох систем. Тим не менш, мабуть, досить багато користувачів на таких системах, як cygwin або навіть Mac, які не мають sudo взагалі або не мають його налаштувати.

Мій скрипт інсталяції завантажує скрипт клієнта API і поміщає його в / usr / bin і робить його виконуваним. Але я маю на увазі питання, пов'язані з sudo, і той факт, що це не потрібно встановлювати в глобальному масштабі, я б просто хотів встановити його в папку $ HOME / .bin користувача (створити його, якщо він не існує) ), а потім переконайтеся, що $ HOME / bin або $ HOME / .bin знаходяться в їх PATH.

Це мій поточний скрипт установки:

#!/bin/bash
BASE="https://api.blah.com"

if ! hash curl 2>/dev/null; then
  echo "Please install curl. On Ubuntu/Mint/Debian, command is sudo apt-get install curl"
  echo "Trying to install curl.."
  sudo apt-get install curl
  if ! hash curl 2>/dev/null; then
    echo "Yeah couldn't install curl.  Please install it."
    exit 1 
  else
    echo "curl installed. Continuing."
  fi
fi

sudo bash -c "curl -s $BASE/mycmd > /usr/bin/mycmd"
sudo chmod uga+x /usr/bin/mycmd

Три причини, чому я ставлю це питання, а не тільки починати рубати рішення: 1) Я вважаю, що це загальна вимога або бажання (встановлюючи щось не глобально, не вимагаючи привілеїв), і відповідь на це питання, ймовірно, буде бути корисним для когось іншого. 2) оскільки це повинно працювати на більшості систем, я вважаю, що буде кілька зморшок, можливо, тих, які мені невідомо, оскільки я не використовую всі типи систем регулярно, просто Ubuntu. 3) Я вважаю, що принаймні декілька користувачів, які перебувають там, можуть вже вирішити цю проблему.

Що стосується 2), перша зморшка, що відбувається зі мною, це те, що багато користувачів зараз перебувають у zsh. Отже, якщо я додаю або змінюю рядок у ~ / .bashrc, який оновлює PATH для включення $ HOME / .bin, це не буде працювати для цих систем.

Отже, щоб повторити питання, який код слід використовувати для завантаження та встановлення скрипта в каталог користувача $ HOME / .bin або ($ HOME / bin) і переконайтеся, що він знаходиться в їхньому PATH, з вимогою (або принаймні сильним бажанням), що це працюватиме майже у всіх системах (якщо вони мають щось на зразок запиту Unix)?

Крім того, ще одна мета-заява з цього питання .. Я скорочую його .. якщо ви повністю заперечуєте підхід, будь ласка, не відповідайте, а не дайте мені лекцію. Наприклад, мені відомо, що деякі люди не люблять встановлення в одну лінію. Якщо у вас є незначні зміни у підході, будь ласка, дайте відповідь.

Дуже дякую!

Відповіді:


0

Якщо ви можете отримати доступ до змінної $ PATH користувача, спробуйте встановити скрипт у каталозі (?), Який є власником і виконується користувачем $ USER.

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