Как мне запустить .sh скрипты?


344

Всякий раз, когда я открываю файл .sh, он открывает его в gedit вместо терминала. Я не могу найти ни одной опции, похожей на Правый клик → Открыть с помощью → Другое приложение ... → Терминал .

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


Этот сценарий предназначен для установки переменных env для дальнейшего использования?
— Роб

1
Вы не должны использовать расширения в скриптах. В какой-то момент в будущем вы можете обнаружить, что другой язык больше подходит для выполнения задачи, выполняемой вашим текущим сценарием. И тогда у вас есть проблема. Вы сохраняете старое имя с полностью вводящим в заблуждение расширением или переименовываете его, возможно, приходится редактировать много мест, где используется ваш скрипт?
— Гейра

Вам не нужно расширение файла. Приятно иметь, но не нужно. ОС не смотрит на расширение файла. Смотрит на данные
— ActionParsnip

5
Мех, если вы переписываете foo.sh в ruby, вы всегда можете использовать файл .sh для запускаruby foo.rb
— glenn jackman

В Dolphin вы можете нажать F4 и консоль откроется
— Motte001

Ответы:


523

Дайте разрешение на выполнение вашего скрипта:

chmod +x /path/to/yourscript.sh

И запустить ваш скрипт:

/path/to/yourscript.sh

Поскольку .ссылается на текущий каталог: если он yourscript.shнаходится в текущем каталоге, вы можете упростить это до:

./yourscript.sh

13
+1 только ответ, чтобы показать добавление прав на выполнение в терминале только способом.
— Hailwood

83
Если вы делаете, bash /path/to/yourscript.shто вам не нужноchmod +x
— Александр Левчук

4
На самом деле, вы можете использовать, . /path/to/yourscript.shесли сценарий должен установить некоторые переменные среды.
— Роб

1
Никто не упоминает традиционное: ./path/to/yourscript.sh(без пробела после .)? Я считаю, что один из них самый простой и простой в использовании ... Но в любом случае, вот мой вариант, который должен делать почти то же самое ./, что и я, хотя я не понимаю, почему вы не будете использовать ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... изменить FILENAMEпо своему вкусу , Также обратите внимание, что shбудет использоваться, если нет альтернативы.
— MiJyn

88

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

  1. Щелкните правой кнопкой мыши по вашему .shфайлу и выберите Свойства :

    введите описание изображения здесь

  2. На вкладке « Разрешения » установите флажок « Разрешить выполнение файла как программы» :

    введите описание изображения здесь

  3. Закройте окно « Свойства» и дважды щелкните файл. Появится диалоговое окно, дающее вам возможность запустить скрипт в терминале:

    введите описание изображения здесь


10
Это не работает в Ubuntu 13.04. В любом случае, продолжает открываться в gedit, никогда не просит меня выполнить. Редактировать: НВМ, я просто отвечаю на это.
— mpen

Прежде чем использовать это, нам нужно разрешить запуск файла с помощью chmod. chmod + x filename.sh или chmod 755 filename.sh
— Арвинд Рават

У меня нет всплывающего окна! IDE открывается сразу, а не всплывающее окно
— Зеленый

Почему я не могу найти "запустить в терминале" на моем интерфейсе? (Ubuntu 18.04)
— Даниэль Мёллер

1
@ DanielMöller, вот ответ на твой вопрос. askubuntu.com/questions/38661/how-do-i-run-sh-files/…
— Ахилеш Дхар Дубей

33

Откройте терминал и перейдите к папке, в которой находится .shфайл. Затем введите:

sh <name of file>.sh

лучший способ открыть любое приложение. Перейдите в каталог .sh, затем откройте его в командной строке. используйте sh <имя файла, как показано выше> .sh, если для этого требуется разрешение, используйте chmod + x /path/to/yourscript.sh или щелкните правой кнопкой мыши и измените разрешение на все
— Durgesh Kumar

24

необходимое условие

Прежде чем вы сможете запустить файл .sh, вы должны сделать его исполняемым:

  1. Щелкните правой кнопкой мыши файл
  2. Выберите Свойства
  3. Выберите разрешения
  4. Выберите Разрешить выполнение файла в качестве программы

Предупреждение

Убедитесь, что вы доверяете источнику, откуда вы получили файл. Это может быть вирус .

Очень простой способ

  1. Дважды щелкните файл
  2. Нажмите запустить в терминале

Это имеет проблемы. Терминал немедленно закроется, и вы не сможете увидеть вывод.

Простой способ

  1. Открытые приложения -> Аксессуары -> Терминал
  2. Перетащите файл .sh в терминал и нажмите Enter

Как это делают профессионалы

  1. Открытые приложения -> Аксессуары -> Терминал
  2. Найти где .sh файл

    • Используйте lsи cdкоманды
    • lsотобразит список файлов и папок в текущей папке . Попробуйте: введите «ls» и нажмите Enter.
    • Как только вы увидите папку, в которую хотите войти, запустите cd, затем пробел, а затем имя папки.
    • Если вы попали в папку, которая вам не нужна, бегите, cd ..чтобы перейти на один уровень вверх
  3. Запустите файл .sh

    • Как только вы можете увидеть, например, script1.shс помощью lsэтого:

      ./script.sh

Почему это сложный путь?

Терминал имеет богатый набор мощных инструментов, которые доступны при наборе команд. Профессионалы находят файл .sh, набирая lsи cd. Как только вы окажетесь в правильной текущей папке, вы можете запустить скрипт следующим образом:

./script1.sh

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

./script1.sh > out.txt

или вы можете отфильтровать вывод по ключевым словам (например, «яблоки»), а затем перенаправить в файл:

./script1.sh | grep apples > ./only-apples

Есть тысячи вещей, которые вы можете добавить в этот файл, просто набрав несколько команд.

Еще один, вы можете скачать файл из Интернета с помощью одной простой команды:

wget www.google.com/images/logos/ps_logo2.png

А затем откройте файл следующим образом:

shotwell ps_logo2.png

6
Я не уверен , что профессионалы способ сделать это правильно, это скорее случай простой способ продвинутый (для контроля продукции) способ
— Hailwood

Приятно знать, что я сделал это так, как это делают профессионалы в моем первом испытании. Я думал, что это был основной способ пользователя.
— НельсонГон

18

В Ubuntu 13.04 исполняемые файлы, открытые в Nautilus, теперь по умолчанию открываются в gedit, а не пользователю, запрашивающему их выполнить. Чтобы включить классическое поведение, вам нужно настроить параметры:

Наутилус → Меню Правка → Настройки → Вкладка «Поведение» → Каждый раз нажимайте переключатель рядом с вопросом.


Человек, который задал вопрос, говорит об Ubuntu 10.10
— edwin

1
Спасибо!!! Я не знаю, почему они это изменили, не мог понять, как что-либо выполнить.
— mpen

1
Это правильный ответ для последней версии Ubuntus.
— gaRex

Как добраться до Наутилуса в 15.10?
— Яаков Айнспан

Начиная с Ubuntu 18.04, вы можете получить доступ к настройкам, открыв каталог и нажав «Файлы -> Настройки» в верхней панели.
— tparker

7

Перейдите в каталог, где находится .shфайл с помощью cd. В этом примере я сохранил свой shфайл как~/Desktop/shell_practice/test.sh

сначала pwdвыясните, где вы находитесь, и если он вернется /home/username(где usernameваше настоящее имя пользователя), вы можете запустить

cd Desktop/shell/practice

Если вы, кажется, где-то еще, вы можете использовать абсолютный путь

cd ~/Desktop/shell/practice

или же

cd $HOME/Desktop/shell/practice

или даже

cd /home/$USER/Desktop/shell/practice

Это все способы описания одного и того же места. Как только вы дойдете до места расположения вашего скрипта, введите

ls

Если вы видите shфайл в выводе, вы можете использовать chmodего для запуска. В моем случае, помните, имя файла test.sh, поэтому я бы запустить

chmod u+x test.sh

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

./test.sh

Если ваш скрипт написан правильно, он будет работать без ошибок ...

Вот живой пример: Вот живой пример


Это
— помогло

1
Wb, @ RuD3B0y, я старался держать ответы лучше всего для новичков, без высокотехнологичного контента, если у вас есть какие-то изменения, добро пожаловать.
— TheExorcist

4

2 основных шага.

  1. в терминале используйте gedit для написания и сохранения скрипта с расширением «.sh» на рабочем столе. (но можно использовать любой текстовый редактор)

  2. откройте Nautilus и щелкните правой кнопкой мыши файл script.sh.

    • в свойствах установите флажок "разрешить выполнение файла .."

    • в меню «Наутилус» щелкните файл, затем настройки, затем поведение

    • установите флажок «запускать исполняемые текстовые файлы при их открытии».

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


3
  1. Щелкните правой кнопкой мыши .shфайл и сделайте его исполняемым.

  2. Откройте терминал ( Ctrl+ Alt+ T).

  3. Перетащите .shфайл в окно терминала и смотрите в страхе.


1
Добро пожаловать в Спросите Ubuntu! Я рекомендую отредактировать этот ответ, чтобы дополнить его конкретными подробностями о том, как сделать первый шаг. (См. Также Как написать хороший ответ? Для общего совета о том, какие ответы считаются наиболее ценными в AskUbuntu.)
— Дэвид Фёрстер

3

Есть несколько способов сделать это.

Опция 1

  1. В терминале cdперейдите в каталог, в котором находится файл Bash (смените каталог).

    Ex. cd Downloads

  2. Бегать bash <filename>.sh

    Это также работает с файлами .run. На этой веб-странице приведен пример такого использования при обновлении Rhythmbox.

Вариант 2

  1. В терминале перейдите в каталог, в котором находится файл bash.

  2. Бегать chmod +x <filename>.sh

  3. В Nautilus откройте файл.


3

Для Ubuntu 18.04 есть небольшая модификация, так как у вас нет всплывающего диалога.

Итак, что вам нужно сделать, это:

Щелкните правой кнопкой мыши «Файлы», выберите «Настройки»> «Выбрать вкладку поведения»> «Пометить, что делать» в разделе «Исполняемый текстовый файл».

Теперь, когда вы дважды щелкнете по любому файлу .sh, вы получите всплывающее окно, где вы можете выбрать опцию «запустить в терминале», чтобы запустить ваш файл .sh.

введите описание изображения здесь


2

В Ubuntu 16.04 это как открыть его в Терминале:

Перейти к File Manager > Edit > Preferences > Behaviorдля Executable Text Filesи выберите Ask each time.

Проблема в том, что по умолчанию установлено значение View Executable Files when they are opened.


1

Если вы поместите свой сценарий оболочки или другой исполняемый файл, который вы создадите в / usr / local / bin, он будет найден и исполнен без указания пути к папке в командной строке или добавления ./ к имени. Например, я создал следующий простой трехстрочный bash-скрипт для отображения UUID диска:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

Я вызвал файл uuid и поместил его в / usr / local / bin. Все, что мне нужно ввести в командной строке:

uuid

0

Ну, я тоже столкнулся с той же проблемой. Я хотел выполнить файл .sh, и он открылся с помощью Gedit на CentOS 7. Итак, вот что я сделал:

  1. Я перешел к пути .shфайла, который я хотел выполнить.
  2. Я открыл терминал.
  3. И я просто перетащил в окно терминала, и он автоматически взял этот файл вместе с путем в качестве ввода.
  4. Нажмите Enter, и вы готовы!

0

Проблема, которую я обнаружил в нескольких дистрибутивах, заключается в том, что они скрыли параметр предпочтений в Nautilus, но исправить это в Ubuntu и других дистрибутивах с помощью Gnome3 - это то же самое (буквально только что сделал эту версию для Fedora и опубликовал реальное исправление, чтобы напомнить мне как в будущем).

  1. устанавливать dconf-editor

    sudo apt-get install dconf-editor
  2. Запустите, dconf-editorиспользуя учетную запись пользователя, который вы хотите это, т.е. не root

    dconf-editor
  3. Перейдите к следующей схеме:

    org.gnome.nautilus.preferences

  4. Измените параметр по умолчанию, чтобы не открывать по умолчанию:

    Найдите, executable-text-activationнажмите на слово displayи измените наask

это даст вам возможность редактировать, просматривать или запускать файл в будущем


0

Я нуб в Linux, и у меня была та же проблема. Если все остальное терпит неудачу:

  1. Открытый терминал
  2. Откройте папку, содержащую файл .sh
  3. Перетащите файл в окно терминала
  4. Путь к файлу появляется в терминале. Нажмите Enter.
  5. Вуаля, ваш файл .sh запущен.

-2

Вы также можете использовать .трюки, с предложением других ответов.

Например:

chmod +x filename.shПредполагая, что вы уже указали путь к файлу, запустите файл с помощью одной из следующих команд:

sh filename.sh

./filename.sh

. filename.sh

2
предупреждение : эти три команды не эквивалентны. Если ваш shebang ссылается на другой двоичный файл (например, Stack), то третья команда попытается выполнить синтаксический анализ аргументов с помощью Bash, что приведет к ошибке.
— Джезен Томас
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.