Linux shell install script

An installer for shell scripts, written in pure sh

I wrote a tiny shell script that basically installs a script into your system by copying it to someplace like /usr/local/bin , chmodding it, and adding it to your PATH. It works on both Unix and Windows (via an emulation layer like MSys or Cygwin). Its source code is available on GitHub. Here is the script in its entirety:

#!/bin/sh set -e help() < echo 'sinister is a simple installer for shell scripts.' echo echo 'Usage: sinister -u url [options]' echo echo 'Options:' echo echo '-?,-h,--help: Print this help and exit.' echo '-c,--chmod: The mode to chmod your script. Defaults are a+x and u+x.' echo '-d,--debug: sinister should be run in debug mode.' echo '-l,--local: The script should be saved for the current user, instead of the entire machine.' echo '-n,--name: The name of the file the script should be saved to. Mandatory if no URL is given.' echo '-o,--output: The output directory the script should be saved to.' echo 'By default this is ~/bin on Unix systems, and C:\Users\you\AppData\Local\script on Windows.' echo '-u,--url: The location of the script online. e.g: https://github.com/you/repo/raw/master/script' echo 'If no URL is given the script is read from stdin.' >on_windows() < uname | grep -q '[CYGWIN|MINGW|MSYS]' >per_user() < test $LOCAL = 'true' >run_powershell() < powershell -NoProfile -ExecutionPolicy Bypass "$1" >getpath_windows() < run_powershell "[Environment]::GetEnvironmentVariable('PATH', '$1')" >setpath_windows() < run_powershell "[Environment]::SetEnvironmentVariable('PATH', '$1', '$2')" >pwd_windows() < run_powershell 'Get-Location' >CHMOD= LOCAL='false' NAME= OUTPUT= URL= test $# -ne 0 while [ $# -gt 0 ] do case "$1" in '-?'|-h|--help) help; exit 0 ;; -c|--chmod) CHMOD="$2"; shift ;; -d|--debug) set -x ;; -l|--local) LOCAL='true' ;; -n|--name) NAME="$2"; shift ;; -o|--output) OUTPUT="$2"; shift ;; -u|--url) URL="$2"; shift ;; *) help; exit 1 ;; esac shift done if [ -z "$CHMOD" ]; then if per_user; then CHMOD='u+x' # Executable for the current user else CHMOD='a+x' # Executable for all users fi fi if [ -z "$URL" ]; then test ! -z "$NAME" SCRIPT=$( < /dev/stdin) # read from standard input else NAME=$# Grab everything after the last / if which curl > /dev/null 2>&1; then SCRIPT=$(curl -sSL "$URL") else # Assume wget is installed SCRIPT=$(wget -q -O - "$URL") fi fi if [ -z "$OUTPUT" ]; then if per_user; then if on_windows; then OUTPUT=~/AppData/Local/"$NAME" else OUTPUT=~/bin fi else if on_windows; then OUTPUT='/C/Program Files/$NAME' else OUTPUT='/usr/local/bin' fi fi fi # Use sudo on Unix ! on_windows && SUDO='sudo' # Where the magic happens $SUDO mkdir -p "$OUTPUT" cd "$OUTPUT" echo "$SCRIPT" | $SUDO tee "$NAME" > /dev/null $SUDO chmod $CHMOD "$NAME" # Add $OUTPUT to PATH if it's not in it if ! which "$NAME" > /dev/null 2>&1; then if on_windows; then if per_user; then TARGET='User' else TARGET='Machine' fi CURRENT_PATH=$(getpath_windows $TARGET) CURRENT_DIRECTORY=$(pwd_windows) setpath_windows "$CURRENT_PATH;$CURRENT_DIRECTORY" $TARGET else # Unix CONTENTS="export PATH=\$PATH:$OUTPUT" if per_user; then echo "$CONTENTS" >> ~/.profile else sudo echo "$CONTENTS" >> /etc/profile fi fi fi 

Any feedback would be appreciated; I haven’t tested this on Windows yet so some of the PowerShell snippets might be untested.

Читайте также:  Можно ли одновременно установить линукс

Источник

How to add shell script to my linux system [duplicate]

The usual location to install local scripts is /usr/local/bin or /usr/local/sbin . See man hier for details of the directory structure.

These directories are usually included if the corresponding /usr/bin or /usr/sbin directories are in the path. See man eviron for information on the standard environment variables including PATH.

The directory hierarchy for many distributions is document in the heir man page. It can be displayed with the command man heir

/usr/local/bin is for programs that all users should be able to run. It is equivalent to /bin and /usr/bin . Normally, most users will not have these on their path.

/usr/local/sbin is for programs that are used for system administration. It is equivalent to /sbin and /usr/sbin .

Much easier than editing a config file. Just copy your script-file to /usr/local/bin or /usr/local/sbin, and you can immediately execute from a command-line.

The way I would solve this (with my fairly rudimentary linux skillz) is to make an alias to the shell script.

First ensure the shell script is executable.

Then, edit your .bashrc file like following:

Add this towards the bottom. (I think you can also add this in a specific alias file, such as .bash_aliases , but I don’t.)

alias commandtorun='/home/user/script.sh' 

Here, commandtorun will be the command you type in to run the script, and ‘/home/user/script.sh’ is the path to the script.

To save changes to your .bashrc in vi editor, :wq , which writes to file and quits.

Edit: You’ll also need to re-source your .bashrc to use the changes in the current session. (Or just restart the session / close and reopen the terminal).

I would (personally) not create the alias and instead put the file in $HOME/bin. Creating an alias for every script is going to be hard to maintain if you create a lot of them. Also the chmod command would be a lot better off if it were either chmod +x script.sh or chmod a+x script.sh There should be no other users in your «user» group so the o+x option is kinda pointless. If you want others to be able to execute the file you need to either chown user:group script.sh and make sure that the «other users» are in that group. Or just let everyone execute it with chmod a+x script.sh

Also. For scripts to be run system wide the convention is to put them in /usr/local/bin/. Scripts that are in your $HOME may not b visible to everyone else.

I had to log out and log in again for this to work on Ubuntu. And ultimately preferred user76204’s solution.

@AndriyMakukha You will need to re-load the .bashrc (see my edit at the end). Thanks for the suggestion.

On Ubuntu, it is possible to create a bin folder in your home folder and place your user scripts in there. Indeed, your ~/.profile will contain the following:

# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" 

After you have created your bin folder you must logout and login again for /home/$USER/bin to appear in your path when you enter echo $PATH . Once it is in your path you will be able to call scripts in there by name and execute them just like you can any other programs.

Читайте также:  Что лучше bsd или linux

The bin folder does not need any special permissions, and if you just want your user to be able to execute the scripts enter chmod u+x when you make them executable.

Your new output of echo $PATH when your bin folder is added should be:

/home/mike/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 

You can place your scripts in /usr/local/bin , but you will need to use sudo to copy them to the folder and then use sudo again when you want to edit them there, so I find having a bin folder in the home folder is very convenient and sensible, particularly on a single user system.

However, it is important to note that if you have more than one user on your system and you want the script to be available for them all, you would definitely need to put it in /usr/local/bin .

Источник

Как запустить install.sh в Linux через Терминал

6-08-2021, 05:40

Linux

641

0

Установить новую программу в Linux можно следующими способами: через программный центр Ubuntu или Менеджер пакетов Synaptic. Тем не менее, некоторые программы приходится устанавливать с применением более сложных методов, например, через терминал. В этой статье вы ознакомитесь с пошаговым процессом установки программного обеспечения с помощью файла INSTALL.sh. В качестве примера в статье будет показана установка клиента Rockhopper VPN.

Шаги

Скачайте программу, которую хотите установить. Установочные файлы обычно сжимаются в архив Tar или zip.

Откройте терминал с помощью сочетания клавиш Ctrl+Alt+T. Введите следующую команду: cd ~/Deskop/rockhopper-0.2.b1-020. Замените rockhopper-0.2.b1-020 именем папки на рабочем столе. Нажмите ↵ Enter.

Сделайте файл .sh исполняемым. Чтобы сделать файл исполняемым, введите в терминал следующую команду: chmod +x install.sh. Замените install.sh именем .sh-файла. Нажмите ↵ Enter.

Запустите файл .sh. Введите эту команду: sudo ./install.sh. Снова замените install.sh именем .sh-файла. Нажмите ↵ Enter Примечание: если это не сработает, попробуйте выполнить команду sudo bash install.sh без «./» (этот способ сработал на Ubuntu 16). Для этого вам придется ввести пароль администратора.

Завершите установку программы. Установка через терминал может включать дополнительные шаги, например, проверку установки.

Источник

Как установить программу в формате — sh,run,deb,bin,install и linux

Установка программ форматов - sh,run,deb,bin,install и linux

Ошибка в тексте? Выделите ее мышкой! И нажмите: CTRL+Enter, сообщите об этом, автор постарается в краткие сроки обновить / исправить материал.

Не понимаете как установить приложения в форматах sh,run,deb,bin,install и linux, читаем материал где все в деталях описано.

Часто в сети мы ищем нужное нам приложение для дистрибутива Ubuntu/Kubuntu/Linux Mint и находим готовые пакеты разнообразных форматов. Например у пользователей которые еще осваивают Linux первым делом будет ступор, как установить программу в подобных форматах. В данном материале, я попытаюсь вам объяснить и показать на примерах, как устанавливаются приложения с всех этих форматов.

установка приложений в Ubuntu

  • 1. Установка программы в формате sh, я с данным форматом регулярно сталкиваюсь, часто это бывают скрипты автоматизированной установки либо программы либо сборки сервера итд, в скрипте прописаны все пункты, что ставить и какие пакеты итд. Все пошагово и далее все собирается воедино и выходит готовое приложение.
Читайте также:  Get process cpu usage linux

установка формата sh

Для установки данных форматов приложений, нам как всегда требуется консоль то есть Терминал, без которого очень трудно представить установку программ подобных форматов.

Что нужно сделать для установки программы в формате sh? первым делом перейдите в директорию(папку) куда вы загружаете(скачиваете) приложения, обычно это папка «Загрузки», откройте терминал(Ctrl+Alt+T), далее выполните следующие команды:

[переходим в папку Загрузки] sudo cd ~/Загрузки/ [даем право на чтение и запуск приложения] sudo chmod a+x ./file.sh [начинаем установку приложения] sudo ./file-name.sh

Лично по своему опыту, я с форматов sh ставил лишь(мини вебмани и еще скрипт был один, сборка сервера уже и забыл название, в общем для wine). Если вам ничего не говорит слово Wine и вы не понимаете, что это такое, ознакомьтесь с материалом — Изучаем Wine, основы для начинающих.

установка пакета формата RUN

  • 2. Установка приложений в формате run, немного таких я встречал. Обычно это драйвера для видеокарты, в большей части случаев.

Устанавливается аналогичным методом как и sh:

[даем право на запуск файлу] sudo chmod +x file_name.run [начинаем установку] sudo sh ./file_name.run

Установка формата Deb

  • 3. Установка программ в формате deb, приложения в подобном формате вы будете видеть часто если вы работаете в одной из систем семейства Debian. Как установить deb файлы, я уже описывал в материале — Как установить пакет формата deb и куда делся exe.

Но так же еще есть вариант установки через терминал, как я ранее писал, первым делом перейдите в папку где лежит ваш файл, далее откройте терминал(Ctrl+Alt+T), и выполните следующую команду:

После начнется установка, в большей части у вас просто запросится разрешение на установку, ввести пароль администратора и нажать клавишу Enter и начнется установка программы.

установка пакета формата BIN

  • 4. Установка программ в формате bin, в данном формате я устанавливал несколько приложений, это драйвера для Java скачанные с официального сайта производителя и установка приложения «Cisco Packet Tracer» для модулирования сетей.

Установка приложения в формате bin, очень похожа на установку приложений в форматах(sh,run,linux и install), откройте терминал, аналогично не забываем перейти в директорию в которой находится данный файл, как перейти, я уже описывал в выше.

Перешли в нужную директорию, далее выполните следующие команды:

[даем права на чтение и запуск] sudo a+x ./file-name.bin [запускаем установку] sudo ./file-name.bin

После запуска установки, от вас будет запрошен лишь пароль администратора и как вариант как это было у меня — «(press any to enter)«, нажать любую клавишу для продолжения установки, ну и возможно на следующем шаге еще ввести Y(yes). На некоторых этапах установки приложений в данном формате это требуется.

установка пакетов формата linux и install

  • 5. Установка программ в формате install и linux, ничем практически не отличается от(sh,run и bin). В формате install, я в сети наблюдаю регулярно приложения. Как вариант, я в последнее время где-то месяц назад, скачивал для тестирования антивирус Nod Eset для Linux, там приложение было не в форматах deb либо run, а именно в формате linux.

Установка аналогично очень проста, переходим в директорию в которой лежит наш скачанный файл и выполняем следующие команды:

[даем права на запуск] sudo chmod +x file-name.linux [запускаем установку] sudo ./file-name.linux

После начнется установка в которой вам придется просто нажимать на кнопочки — «Я согласен и тому подобные».

Источник

Оцените статью
Adblock
detector