Должен ли я сохранять свои скрипты с расширением .sh?

50

У меня есть некоторые функциональные скрипты, и я хочу скопировать на /usr/bin Я хочу использовать их в качестве обычных команд терминала. Правильно ли использовать их с расширением .sh или я могу сохранить их без расширения?     

задан Patterson 27.07.2014 в 00:48
источник

3 ответа

61

Нет, это не очень хорошая практика, вы должны держать свои скрипты без расширения. Обратите внимание: скрипты, входящие в состав пакетов, не имеют расширения .sh , т. Е. update-grub , а не update-grub.sh . Если вы все еще не уверены в этом, сообщите, что Руководство по стилю Google Shell говорит:

  

Исполняемые файлы не должны иметь расширения (настоятельно рекомендуется) или расширения .sh. Библиотеки должны иметь расширение .sh и не должны быть исполняемыми.

PS Вам не нужно вставлять скрипт в /bin . Вы можете создать каталог ~/bin и разместить там свой скрипт. Каталог ~/bin по умолчанию включен в $PATH , поэтому скрипты, которые там могут быть запущены, могут выполняться как любая другая команда оболочки.

    
ответ дан user280493 27.07.2014 в 01:00
источник
8

Во второй рекомендации рекомендуется использовать ~/bin , который автоматически добавляется к вашему $PATH , как сказал Сергей . Или /usr/local/bin , которое уже может быть на PATH . Однако:

  • Вы делаете это для себя. Используйте то, с чем вам комфортно. В самом деле, я бы сказал, держите расширение, чтобы вам напомнили, что это ваш скрипт, который вы используете, поскольку -
  • Расширения встречаются редко в /usr/bin . В моей системе я могу найти только два:

    $ dpkg -S 'ls /usr/bin/*.sh'
    mtools: /usr/bin/amuFormat.sh
    gettext-base: /usr/bin/gettext.sh
    

    Итак, если вы упаковываете, определенно не оставляйте расширение.

ответ дан muru 27.07.2014 в 01:05
4

Просто поставьте следующую строку вверху файла:

#!/bin/bash

Итак, этот файл будет автоматически набирать: Скрипт оболочки без какого-либо расширения!

Не забудьте предоставить разрешение на выполнение для файла.

Для размещения сценария так: его можно запустить с помощью прямой команды: Где я должен поместить свой сценарий, чтобы я мог запустить его с помощью прямая команда?

    
ответ дан Pandya 27.07.2014 в 07:39