Как запустить оболочку script без использования команд "sh" или "bash"?

У меня есть оболочка script, которую я хочу запустить без использования команд "sh" или "bash". Например:

Вместо sh script.sh

Я хочу использовать: script.sh

Как я могу это сделать?

P.S. (i) Я не использую shell script, и я пробовал читать об псевдонимах, но я не понимал, как их использовать.

(ii) Я также прочитал ссылку на script с другим файлом в переменных PATH. Я использую мой университетский сервер, и у меня нет прав на создание файла в этих местах.

Ответ 1

Добавить "shebang" в верхней части вашего файла:

#!/bin/bash

И сделайте файл исполняемым (chmod +x script.sh).

Наконец, измените свой путь, чтобы добавить каталог, в котором находится ваш script:

export PATH=$PATH:/appropriate/directory

(обычно вы хотите $HOME/bin для хранения собственных скриптов)

Ответ 2

Вот некоторые из предпосылок прямого использования имени скрипта:

  1. Добавьте строку she-bang (#!/bin/bash) в самом верху.
  2. Использование chmod u+x scriptname делает скрипт исполняемым. (где scriptname - это имя вашего скрипта)
  3. Поместите скрипт в папку /usr/local/bin.
  4. Запустите скрипт, используя только имя скрипта.

Примечание. Причина, по которой я предложил поместить ее в папку /usr/local/bin заключается в том, что, скорее всего, это будет путь, уже добавленный в PATH variable.

Обновить:

Если у вас нет доступа к папке /usr/local/bin сделайте следующее:

  1. Создайте папку в вашем домашнем каталоге и позвольте называть ее myscripts.
  2. Выполните ls -lart в своем домашнем каталоге, чтобы определить сценарий запуска, используемый вашей оболочкой. Это должен быть .profile или .bashrc.
  3. После того, как вы определили скрипт запуска, добавьте следующую строку в ваш скрипт: export set PATH=$PATH:~/myscript.
  4. После добавления введите исходный скрипт или выйдите из системы и снова войдите в систему.
  5. Выполните ваш скрипт, используя имя scriptname.

Ответ 3

Просто убедитесь, что он выполним, используя chmod +x. По умолчанию текущий каталог не находится на вашем PATH, поэтому вам нужно будет выполнить его как ./script.sh - или иначе ссылаться на него по квалифицированному пути. Кроме того, если вам действительно нужно просто script.sh, вам нужно будет добавить его в свой PATH. (Возможно, у вас нет доступа к изменению системного пути, но вы почти наверняка измените PATH вашей собственной текущей среды.) Это также предполагает, что ваш script начинается с чего-то вроде #!/bin/sh.

Вы также можете использовать псевдоним, который на самом деле не связан с сценарием оболочки, а просто оболочкой, и прост как:

alias script.sh='sh script.sh'

Это позволит вам просто просто script.sh (буквально - это не будет работать для любого другого файла *.sh) вместо sh script.sh.

Ответ 4

Вам нужно включить исполняемый бит для программы.

chmod +x script.sh

Затем вы можете использовать ./script.sh

Вы можете добавить папку в PATH в ваш .bashrc файл (расположенный в вашем домашнем каталоге). Добавьте эту строку в конец файла:

export PATH=$PATH:/your/folder/here

Ответ 5

В этом примере файл будет называться myShell

Прежде всего нам нужно сделать этот файл, который мы можем просто начать, набрав следующее:

sudo nano myShell

Заметьте, мы не добавили расширение .sh? Это потому, что когда мы запускаем его из терминала, нам нужно только набрать myShell для запуска нашей команды!

Теперь в nano верхняя строка ДОЛЖНА быть #!/bin/bash тогда вы можете оставить новую строку перед продолжением.

Для демонстрации добавлю базовый Hello World! ответ

Итак, я набираю следующее:

echo Hello World!

После этого мой пример должен выглядеть так:

#!/bin/bash
echo Hello World!

Теперь сохраните файл и затем выполните эту команду:

sudo chmod +x myShell

Теперь мы сделали исполняемый файл, и мы можем переместить его в /usr/bin/ с помощью следующей команды:

sudo cp myShell /usr/bin/

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

Я использовал sudo shutdown -r now

Congrats! Наша команда сейчас выполнена! В терминале мы можем набрать myShell и он должен сказать Hello World!

Ответ 6

Вы можете ввести sudo install (имя script)/usr/local/bin/(что вы хотите напечатать для выполнения указанного script)

ex: sudo install quickcommit.sh /usr/local/bin/quickcommit введите пароль

теперь может работать без .sh и в любом каталоге

Ответ 7

Добавить. (текущий каталог) к переменной PATH.
Вы можете сделать это, отредактировав файл .profile.
поместите следующую строку в ваш файл .profile
PATH=$PATH:.

Просто не забудьте добавить строку Shebang (#!/bin/bash) в начало вашего script и выполнить исполняемый файл script (используя chmod +x <File Name>).

Ответ 8

Вот моя резервная копия script, которая даст вам идею и автоматизацию:

Сервер: Ubuntu 16.04 PHP: 7.0 Apache2, Mysql и т.д.

# Make Shell Backup Script - Bash Backup Script
    nano /home/user/bash/backupscript.sh
        #!/bin/bash
        # Backup All Start
        mkdir /home/user/backup/$(date +"%Y-%m-%d")
        sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_rest.zip /etc -x "*apache2*" -x "*php*" -x "*mysql*"
        sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_apache2.zip /etc/apache2
        sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_php.zip /etc/php
        sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_mysql.zip /etc/mysql
        sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_rest.zip /var/www -x "*html*"
        sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_html.zip /var/www/html
        sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*"
        # Backup All End
        echo "Backup Completed Successfully!"
        echo "Location: /home/user/backup/$(date +"%Y-%m-%d")"

    chmod +x /home/user/bash/backupscript.sh
    sudo ln -s /home/user/bash/backupscript.sh /usr/bin/backupscript

измените/home/user в свой каталог пользователя и введите: backupscript в любом месте терминала для запуска script! (предполагая, что /usr/bin находится на вашем пути)

Ответ 9

Введите "#!/bin/sh" перед сценарием. Затем сохраните его, например, как script.sh. скопируйте его в $HOME/bin или $HOME/usr/bin
Каталог может отличаться в разных дистрибутивах Linux, но они заканчиваются на 'bin' и находятся в домашнем каталоге cd $HOME/bin или $HOME/usr/bin
Наберите chmod 700 script.sh
И вы можете запустить его, просто набрав run.sh на терминале. Если это не работает, попробуйте chmod +x run.sh вместо chmod 700 run.sh

Ответ 10

Просто:

/path/to/file/my_script.sh