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

344

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

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

Alex
источник
Этот сценарий предназначен для установки переменных 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
karthick87
источник
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
italianfoot
источник
лучший способ открыть любое приложение. Перейдите в каталог .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, а не пользователю, запрашивающему их выполнить. Чтобы включить классическое поведение, вам нужно настроить параметры:

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

imjustmatthew
источник
Человек, который задал вопрос, говорит об 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файл в окно терминала и смотрите в страхе.

1p_bunny
источник
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 запущен.
Linux_noob
источник
-2

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

Например:

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

sh filename.sh

./filename.sh

. filename.sh
Awais
источник
2
предупреждение : эти три команды не эквивалентны. Если ваш shebang ссылается на другой двоичный файл (например, Stack), то третья команда попытается выполнить синтаксический анализ аргументов с помощью Bash, что приведет к ошибке.
Джезен Томас