Как мне выполнить скрипт bash в Терминале? - PullRequest
80 голосов
/ 01 февраля 2010

У меня есть скрипт bash вроде:

#!/bin/bash

echo Hello world!

Как мне выполнить это в Терминале?

Ответы [ 8 ]

95 голосов
/ 01 февраля 2010

Еще один способ выполнить его (на этот раз без настройки прав на выполнение):

bash /path/to/scriptname
36 голосов
/ 01 февраля 2010

$prompt: /path/to/script и нажмите ввод. Обратите внимание, что вы должны убедиться, что у скрипта есть разрешения на выполнение.

27 голосов
/ 27 июня 2012

Вы можете сделать:
sh scriptname.sh

24 голосов
/ 01 февраля 2010

перейдите в каталог, содержащий скрипт, или поместите его в папку bin, которая находится в вашем $ PATH

затем введите

./scriptname.sh

если в том же каталоге или

scriptname.sh

, если он находится в папке bin.

9 голосов
/ 06 сентября 2017

Сначала вы должны сделать его исполняемым, используя: chmod +x name_of_your_file_script.

После того, как вы сделали его исполняемым, вы можете запустить его, используя ./same_name_of_your_file_script

9 голосов
/ 02 сентября 2014

Измените каталог на , где находится скрипт , с помощью cd command

Затем введите

bash program-name.sh
3 голосов
/ 25 марта 2019

Это старая ветка, но я наткнулся на нее, и я удивлен, что никто еще не дал полного ответа. Так что вот так ...

Учебник по выполнению сценария командной строки!

Q: Как мне выполнить это в Терминале?

Путаница и конфликты:

  • Вы не нуждаетесь в «расширении» (таком как .sh или .py или что-нибудь еще), но это помогает отслеживать вещи. Это не повредит. Однако если имя сценария содержит расширение, вы должны его использовать.
  • Вы не должны находиться в каком-либо определенном каталоге вообще по любой причине.
  • Вы не должны ввести имя программы, которая запускает файл (BASH или Python или любой другой), если вы этого не хотите. Это не повредит.
  • Вы не нуждаетесь sudo в этом. Эта команда зарезервирована для запуска команд от имени другого пользователя или пользователя «root» (администратора). Великий пост здесь .

(Человек, который только учится выполнять сценарии, не должен использовать эту команду, если в этом нет реальной необходимости, например, установки новой программы. Хорошее место для размещения ваших сценариев - в папке ~ / bin Это можно сделать, набрав cd ~/bin или cd $HOME/bin в строке терминала. У вас будут все права в этой папке.)

Чтобы «выполнить этот скрипт» из терминала в системе типа Unix / Linux, вам нужно сделать три вещи:

  1. Сообщите системе местонахождение скрипта. (выберите один)

    • Введите полный путь с именем скрипта (например, /path/to/script.sh). Вы можете проверить полный путь, набрав pwd или echo $PWD в терминале.
    • Выполнить из того же каталога и использовать ./ для пути (например, ./script.sh). Легко.
    • Поместите скрипт в каталог, который находится в системе PATH и просто введите имя (например, script.sh). Вы можете проверить систему PATH, набрав echo $PATH или echo -e ${PATH//:/\\n}, если хотите получить более точный список.
  2. Сообщите системе, что скрипт имеет разрешение на выполнение. (выберите один)

    • Установите бит выполнения, набрав chmod +x /path/to/script.sh в терминале.
    • Вы также можете использовать chmod 755 /path/to/script.sh, если предпочитаете цифры. Здесь отличная дискуссия с классным графиком здесь .
  3. Сообщите системе тип сценария. (выберите один)

    • Введите название программы перед сценарием. (например, BASH /path/to/script.sh или PHP /path/to/script.php) Если сценарий имеет расширение, например .php или .py, оно является частью имени сценария, и его необходимо включить.
    • Используйте shebang , который, как я вижу, у вас есть (#!/bin/bash) в вашем примере. Если у вас есть это в качестве первой строки вашего скрипта, система будет использовать эту программу для выполнения скрипта. Нет необходимости набирать программы или использовать расширения.
    • Используйте «портативный» shebang . Вы также можете попросить систему выбрать версию программы, которая является первой в PATH, используя #!/usr/bin/env, за которым следует имя программы (например, #!/usr/bin/env bash или #!/usr/bin/env python3). Есть плюсы и минусы, которые подробно обсуждаются здесь .
0 голосов
/ 01 февраля 2019

Если вы находитесь в каталоге или папке, в которой доступен файл скрипта, просто измените разрешение файла в исполняемом режиме, используя «chmod + x your_filename». После этого вы запустите скрипт с помощью следующей команды. "$ sudo ./your_filename.sh" Над "." представлять текущий каталог. Заметка! Если вы не находитесь в каталоге, где находится файл сценария bash, вы можете изменить каталог, в котором расположен файл, с помощью команды «cd Directory_name / write the complete path». В противном случае ваш скрипт не может работать.

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