Всякий раз, когда я открываю файл .sh, он открывает его в gedit вместо терминала. Я не могу найти ни одной опции, похожей на . Щелкните правой кнопкой мыши → Открыть с помощью → Другое приложение ... → Терминал .
Как открыть этот файл в терминале?
Дайте разрешение на выполнение вашему сценарию:
chmod +x /path/to/yourscript.sh
И чтобы запустить ваш сценарий:
/path/to/yourscript.sh
Поскольку .
относится к текущему каталогу: если yourscript.sh
находится в текущий каталог, вы можете упростить это до:
./yourscript.sh
Вы также можете использовать .
трюки с предложением других ответов.
Например:
chmod +x filename.sh
, если вы уже прошли путь к файлу, а затем запустите файл с помощью одной из следующих команд:
sh filename.sh
./filename.sh
. filename.sh
Проблема, которую я обнаружил в нескольких дистрибутивах, заключается в том, что они скрыли опцию предпочтений в Nautilus, но исправить ее в Ubuntu и других дистрибутивах с помощью Gnome3 - то же самое (буквально только что сделали эту версию Fedora и опубликовали реальное исправление). чтобы напомнить мне, как в будущем).
Установить dconf-editor
sudo apt-get install dconf-editor
Запустите dconf-editor
, используя учетную запись пользователя, для которой вы хотите это, т.е. НЕ root
dconf-editor
Перейдите к следующей схеме:
org.gnome.nautilus.preferences
Измените параметр по умолчанию, чтобы он не открывался по умолчанию:
Найдите executable-text-activation
, нажмите на слово display
и измените на ask
, что даст вам возможность редактировать, просматривать или запускать файл в будущем.
Ну, я тоже столкнулся с той же проблемой. Я хотел выполнить файл .sh, и он открылся с помощью Gedit в CentOS 7. Итак, вот что я сделал:
.sh
, который я хотел выполнить. [ 111] Я новичок в Linux, и у меня была та же проблема. Если ничего не помогает:
Если вы поместите свой сценарий оболочки или другой исполняемый файл, который вы создадите в / 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
Для Ubuntu 18.04 , есть небольшая модификация, так как у вас не появляется всплывающее диалоговое окно.
Итак, что вам нужно сделать, это:
Щелкните правой кнопкой мыши «Файлы», выберите «Настройки»> «Выбрать вкладку поведения»> «Пометить, что делать» в тексте исполняемого файла. [114 ]
Теперь, когда вы дважды щелкнете по любому файлу .sh, вы получите всплывающее окно, где вы можете выбрать опцию «запустить в терминале», чтобы запустить ваш файл .sh.
Щелкните правой кнопкой мыши файл .sh
и сделайте его исполняемым.
Откройте терминал ( Ctrl kbd> + Alt kbd> + T kbd>).
Перетащите файл .sh
в окно терминала и смотрите с благоговением.
Есть несколько способов сделать это.
В терминале откройте каталог, в котором находится файл Bash, используя cd
(смените каталог).
Пример. cd Downloads
Выполнить bash <filename>.sh
Это также работает с файлами .run. На этой веб-странице приведен пример такого использования при обновлении Rhythmbox.
В терминале перейдите в каталог, в котором находится файл bash.
Выполнить chmod +x <filename>.sh
В Nautilus откройте файл.
2 основных шага.
в терминале, используйте gedit для написания и сохранения скрипта с расширением .sh на рабочий стол. (но можно использовать любой текстовый редактор)
откройте Nautilus и щелкните правой кнопкой мыши файл script.sh.
в свойствах установите флажок «разрешить выполнение файла ..»
в меню «Наутилус», выберите файл, затем настройки, затем поведение
[1117 ]отметьте «запускать исполняемые текстовые файлы при их открытии».
Теперь, когда вы дважды щелкните файл на рабочем столе, он должен запуститься. нет необходимости в .
или ./
В Ubuntu 13.04 исполняемые файлы, открытые в Nautilus, теперь открываются в gedit по умолчанию, вместо того, чтобы предлагать пользователю выполнить их. Чтобы включить классическое поведение, вам нужно настроить предпочтения:
Наутилус → Меню правки → Предпочтения → вкладка «Поведение» → Каждый раз нажимать переключатель рядом с вопросом.
Вам нужно пометить сценарии оболочки как исполняемые для запуска их из файлового менеджера:
Щелкните правой кнопкой мыши по файлу .sh
и выберите Свойства : [ 1113]
На вкладке Разрешения установите флажок Разрешить выполнение файла как программы :
Закройте окно Свойства и дважды щелкните файл. Появится диалоговое окно с возможностью запустить скрипт в терминале:
В Ubuntu 16.04 это как открыть его в Терминале:
Перейдите на File Manager > Edit > Preferences > Behavior
для Executable Text Files
и выберите Ask each time
.
Проблема в том, что по умолчанию установлено значение View Executable Files when they are opened
.
Прежде чем вы сможете запустить файл .sh, вы должны сделать его исполняемым:
Убедитесь, что вы доверяете источнику, откуда вы получили файл. Это может быть вирус .
Это проблема. Терминал немедленно закроется, и вы не сможете увидеть вывод.
Найдите, где находится файл .sh
ls
и cd
ls
составьте список файлов и папок в текущей папке . Попробуйте: введите «ls» и нажмите Enter. cd
, затем пробел и имя папки cd ..
перейти на один уровень вверх Запустить файл .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
Откройте терминал и перейдите к папке, в которой находится файл .sh
. Затем введите:
sh <name of file>.sh
Перейдите в каталог, где находится файл .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
или даже [1124 ]
cd /home/$USER/Desktop/shell/practice
это все способы описания одного и того же места. Как только вы дойдете до места расположения вашего скрипта, введите
ls
. Если вы видите файл sh
в выводе, вы можете использовать chmod
, чтобы сделать его исполняемым. В моем случае, помните, имя файла test.sh
, поэтому я бы запустил
chmod u+x test.sh
Теперь, когда мы находимся в том же каталоге, что и скрипт, мы должны указать оболочке, которую хотим выполнить файл, указав его местоположение ./
(текущий каталог, за которым следует разделитель пути, чтобы отличить его от имени файла). Чтобы запустить мой файл, я набрал бы:
./test.sh
Если ваш скрипт написан правильно, он будет работать без ошибок ...
bash /path/to/yourscript.sh
тогда Вы don' t потребностьchmod +x
– dazzle 01.05.2011, 18:51. /path/to/yourscript.sh
, если сценарий должен настроить некоторые переменные среды. – Brian Armstrong 02.05.2011, 00:46./path/to/yourscript.sh
(без пространства после.
)? Я нахожу, что каждый является самым простым и легким для использования... Но так или иначе, вот моя альтернатива, которая должна сделать, почти то же как./
было бы, хотя я don' t видят почему Вы wouldn' t использование./
:(FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)
... редактированиеFILENAME
к Вашей симпатии. Также обратите внимание, чтоsh
будет использоваться, если не будет никакой альтернативы. – Marius Schulz 19.06.2013, 17:50