Как я могу установить мой скрипт в каталог $ 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

Я задаю этот вопрос по трем причинам, а не просто сразу начинаю искать решение быть полезным для кого-то еще. 2) так как это должно работать на большинстве систем, я полагаю, что будет несколько морщин, возможно, таких, о которых я не знаю, поскольку я не использую все типы систем регулярно, только Ubuntu. 3) Я считаю, что, по крайней мере, несколько пользователей там уже могли решить эту проблему.

Что касается 2), первое, что приходит мне в голову, это то, что многие пользователи сейчас находятся в zsh. Так что, если я добавлю или изменим строку в ~ / .bashrc, которая обновляет PATH, добавив $ HOME / .bin, это не сработает для этих систем.

Итак, чтобы сформулировать вопрос, какой код я должен использовать, чтобы загрузить и установить мой скрипт в каталог пользователя $ HOME / .bin или ($ HOME / bin) и убедиться, что он находится в его PATH, с требованием (или, по крайней мере, сильным желанием), чтобы это работало почти в каждой системе (если у них есть что-то вроде приглашения Unix)?

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

Спасибо большое!

Jason Livesay
источник

Ответы:

0

Если вы можете получить доступ к пользовательской переменной $ PATH, попробуйте установить скрипт в каталог (?), Который принадлежит и исполняется $ USER.

Nevin Williams
источник