Як запустити .sh скрипти?


344

Щоразу, коли я відкриваю .sh файл, він відкриває його в gedit замість терміналу. Не можу знайти жодного варіанта, подібного до клацання правою кнопкою мишіВідкрити за допомогоюІнший додаток ...Термінал .

Як відкрити цей файл у терміналі?


Чи призначений цей сценарій встановити env змінні для подальшого використання?
Роб

1
Не слід використовувати розширення для скриптів. В якийсь момент у майбутньому ви можете виявити, що інша мова є більш підходящою для виконання завдання, яке виконує ваш поточний сценарій. І тоді у вас є проблема. Чи зберігаєте ви старе ім’я з цілком оманливим розширенням, чи перейменовуєте його, можливо, потрібно редагувати багато місць, де використовується ваш сценарій?
geirha

Вам не потрібно розширення файлу. Приємно мати, але це не потрібно. ОС не розглядає розширення файлу. Це дивиться на дані
ActionParsnip

5
Так, якщо ви перезапишете foo.sh в рубін, ви завжди можете використовувати .sh файл для запускуruby foo.rb
glenn jackman

У Дельфіні можна натиснути F4 і відкриється консоль
Motte001

Відповіді:


523

Надайте дозвіл на виконання сценарію:

chmod +x /path/to/yourscript.sh

І запустити свій сценарій:

/path/to/yourscript.sh

Оскільки .стосується поточного каталогу: якщо yourscript.shвін знаходиться в поточному каталозі, ви можете спростити це до:

./yourscript.sh

13
Відповідь лише +1, щоб показати додавання дозволів на виконання лише терміналом.
Гейлвуд

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 і ніколи не просить мене виконати. Редагувати: Nvm, imjustmatthew відповідає на це.
1313

Перш ніж використовувати це, нам потрібно зробити дозвіл на виконання файлу за допомогою chmod. chmod + x filename.sh або chmod 755 filename.sh
Arvind Rawat

У мене немає спливаючого вікна! 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

Добре знати, що я це зробив так, як це робили професіонали на моєму першому випробуванні. Я подумав, що це основний спосіб користувача.
НельсонГон

19

На Ubuntu 13.04 виконувані файли, відкриті в Nautilus, тепер відкриваються в gedit за замовчуванням, а не спонукають користувача їх виконувати. Щоб увімкнути класичну поведінку, потрібно скорегувати налаштування:

Наутілус → Меню редагування → Налаштування → Вкладка Поведінка → Клацніть перемикач біля Попросити кожен раз.


Людина, яка задала питання, говорить про Ubuntu 10.10
Edwin

1
Дякую!!! Я не знаю, чому вони це змінили, я не міг придумати, як щось виконати.
1313

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.

    • під властивостями встановіть прапорець "дозволити виконання файлу .."

    • у меню Nautilus натисніть файл, потім налаштування, а потім поведінку

    • встановіть прапорець "запустити виконавчі текстові файли, коли вони відкриваються".

Тепер, коли ви двічі клацніть файл на робочому столі, він повинен виконуватись. немає потреби .або./


3
  1. Клацніть .shфайл правою кнопкою миші та зробіть його виконуваним.

  2. Відкрийте термінал ( Ctrl+ Alt+ T).

  3. Перетягніть .shфайл у вікно терміналу і дивіться з побоюванням.


1
Ласкаво просимо до Ask Ubuntu! Рекомендую відредагувати цю відповідь, щоб розширити її конкретними деталями щодо того, як зробити перший крок. (Дивіться також Як я можу написати гарну відповідь? Для загальних порад про те, які типи відповідей вважаються найціннішими на AskUbuntu.)
Девід Фоерстер

3

Є кілька способів зробити це.

Варіант 1

  1. У терміналі відкрийте каталог, у якому використовується файл Bash cd(змінити каталог).

    Вих. 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 це відкриття в Terminal:

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

Проблема полягає в тому, що вона за замовчуванням встановлена ​​на View Executable Files when they are opened.


1

Якщо ви розмістите скрипт оболонки або інший виконуваний файл, який ви створюєте в / usr / local / bin, він буде знайдений та виконаний, не вказуючи шлях до папки в командному рядку чи додаючи ./ до імені. Наприклад, я створив такий простий 3-рядовий скрипт 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. Voila, запускається ваш .sh файл.

-2

Ви також можете використовувати .хитрощі, пропонуючи інші відповіді.

Наприклад:

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

sh filename.sh

./filename.sh

. filename.sh

2
попередження : Ці три команди не рівнозначні. Якщо ваш шебанг посилається на інший бінарний (наприклад, Stack), третя команда спробує розібрати аргументи з Bash, що не вдасться.
Єзен Томас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.