Изменить: места, где я сказал $ 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)?
Также еще одно мета-утверждение по этому вопросу .. Я сокращаю это .. если вы полностью возражаете против подхода, пожалуйста, просто не отвечайте, а не читайте мне лекцию. Например, я знаю, что некоторые люди не любят однострочные установки. Если у вас есть небольшие изменения в подходе, пожалуйста, ответьте.
Спасибо большое!