71
Software / Re:Skript měnící obnovovací frekvenci monitoru podle (ne)připojení zdroje
« Poslední příspěvek od ramael kdy 10 Dubna 2024, 21:39:09 »Ano je to tak. Shebang je velice důležitý nejen v bash. Vždy musí být udána absolutní cesta k obslužnému programu. Díky programu env je to jednodušší. Protože si root může instalovat co chce, kam chce atd., nebo si vytvořit svůj systém. Program env za nás řeší kde to nalézt. Název obslužného programu je pak argument programu env.
Tohle:
Proto není v linuxu důležité jakou příponu má soubor. Klidně můžeš napsat bash script a pojmenovat ho třeba vypis.muj A bude stejně fungovat jako by se jmenoval vypis.sh nebo jen vypis. A to díky shebangu.
Příklad:
Vytvoříme si soubor s názvem vypis:
Samozřejmě to platí nejen pro bash. Pokud vytvoříš script v jiném scriptovacím jazyce (python, perl, lua, ..) zadáš to tam a hotovo. Můžeš i odlišit například mezi verzemi pythonu:
Tohle:
Kód: [Vybrat]
#! /bin/bash
bude většinou fungovat jako toto:Kód: [Vybrat]
#! /usr/bin/bash
stejně jako "čistě" napsané:Kód: [Vybrat]
#! /usr/bin/env bash
Může se stát, že budou různé verze interpreta a díky tomu shebangu si to tvůrce ošéfuje.Proto není v linuxu důležité jakou příponu má soubor. Klidně můžeš napsat bash script a pojmenovat ho třeba vypis.muj A bude stejně fungovat jako by se jmenoval vypis.sh nebo jen vypis. A to díky shebangu.
Příklad:
Vytvoříme si soubor s názvem vypis:
Kód: [Vybrat]
>vypis
Vložíme do něho toto:Kód: [Vybrat]
#! /usr/bin/env bash
echo "******** jdu vypsat složku $( pwd) **********"
ls -l
Dáme mu právo spouštění:Kód: [Vybrat]
chmod +x vypis
a vytvoříme dvě kopie:Kód: [Vybrat]
cp vypis vypis.sh
cp vypis vypis.muj
a teď si je postupně spustíme:Kód: [Vybrat]
./vypis
./vypis.sh
./vypis.muj
Výstup bude pokaždé stejný. Klidně tomu dej pythoní příponu vypis.py ale díky shebangu se to spustí tak jak má, a výstup bude opět stejný.Samozřejmě to platí nejen pro bash. Pokud vytvoříš script v jiném scriptovacím jazyce (python, perl, lua, ..) zadáš to tam a hotovo. Můžeš i odlišit například mezi verzemi pythonu:
Kód: [Vybrat]
#! /usr/bin/env python2
neboKód: [Vybrat]
#! /usr/bin/env python3
a opět nebude záležet na příponě.