Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Shebangs: ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Bash ΠΈ Python ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² Linux ΡΠ΅ΡΠΌΠΈΠ½Π°Π»
ΠΠΊΠΎ Π½ΡΠΊΠΎΠ³Π° ΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ shell ΠΈΠ»ΠΈ Python ΡΠΊΡΠΈΠΏΡ Π½Π° Linux ΠΈ ΡΡΠ΅ ΡΠ΅ ΡΡΠ΄ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π½Π°Π΅ ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° β ΠΎΡΠ³ΠΎΠ²ΠΎΡΡΡ ΡΠ΅ ΠΊΡΠΈΠ΅ Π² ΠΌΠ°Π»ΠΊΠ°, Π½ΠΎ ΠΌΠΎΡΠ½Π° Π΄Π²ΡΡΠΈΠΌΠ²ΠΎΠ»Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ»: shebang (#!).
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π² ΡΡΠ΅Π΄Π° Π½Π° VPS Hosting, ΠΈΠ»ΠΈ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° Π²Π°ΡΠΈΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡ, ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΡΡ shebangs Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠΌΠ΅Π½ΠΈΠ΅ Π·Π° Linux, ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ²Π»Π°Π΄Π΅Π΅.
Π’ΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΠ±Ρ Π²Π°ΡΠ° Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅: ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ° shebangs, ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π² Bash ΠΈ Python ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΈ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡ Π»ΡΠ±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΎΡ Π³ΠΎΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ°ΠΊΠ²ΠΎ Π΅ Shebang (#!)?
A shebang (ΡΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΊΠ°ΡΠΎ *sha-bang*, *hashbang*, ΠΈΠ»ΠΈ *pound-bang*) Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΏΠΎΡΡΠ°Π²Π΅Π½Π° Π½Π° ΡΠ°ΠΌΠΈΡ ΠΏΡΡΠ²ΠΈ ΡΠ΅Π΄ Π½Π° ΡΠ°ΠΉΠ» ΡΡΡ ΡΠΊΡΠΈΠΏΡ. Π’ΠΎΠΉ ΠΊΠ°Π·Π²Π° Π½Π° Linux ΡΠ΄ΡΠΎΡΠΎ ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΡΠ°Π½Π°Π»Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΠ°ΠΉΠ»Π°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π΅ ΠΏΡΠΎΡΡ:
#!/path/to/interpreterΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΡΠ° ΠΏΡΡΠ²ΠΈΡΠ΅ Π΄Π²Π° Π±Π°ΠΉΡΠ° Π½Π° ΡΠ°ΠΉΠ»Π°. ΠΠΊΠΎ Π½Π°ΠΌΠ΅ΡΠΈ #!, ΡΠΎΠΉ ΠΏΡΠ΅Π΄Π°Π²Π° ΡΠ°ΠΉΠ»Π° Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΏΠΎΡΠΎΡΠ΅Π½ Π½Π° ΡΠΎΠ·ΠΈ ΡΠ΅Π΄. ΠΠ΅Π· shebang, shell-ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡ ΡΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ β ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ»Π΅Π½ ΠΎΡΠΊΠ°Π·, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΡΠΈ ΡΠΌΠ΅ΡΠ²Π°Π½Π΅ Π½Π° Π΅Π·ΠΈΡΠΈ.
Π§Π΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π½Π° Shebang
| Π’ΠΈΠΏ ΡΠΊΡΠΈΠΏΡ | Shebang ΡΠ΅Π΄ |
|---|---|
| Bash | #!/bin/bash |
| POSIX Shell | #!/bin/sh |
| Python 3 | #!/usr/bin/env python3 |
| Python 2 (legacy) | #!/usr/bin/env python2 |
| Perl | #!/usr/bin/perl |
| Ruby | #!/usr/bin/env ruby |
| Node.js | #!/usr/bin/env node |
ΠΠ°ΡΠΎ /usr/bin/env Π΅ Π²Π°ΠΆΠ΅Π½
Π§Π΅ΡΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ shebang Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π² Π΄Π²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠΈΠ»Π°:
#!/bin/python3ΡΡΠ΅ΡΡ:
#!/usr/bin/env python3ΠΡΠΎΡΠ°ΡΠ° ΡΠΎΡΠΌΠ° Π΅ ΠΏΠΎΡΡΠΈ Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½Π°. ΠΡΠΎ Π·Π°ΡΠΎ:
- ΠΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡ: ΠΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π°
python3ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π°ΡΠΈΡΠ° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ Linux Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ, macOS ΠΈ BSD ΡΠΈΡΡΠ΅ΠΌΠΈ./usr/bin/envΠΏΡΠ΅ΡΡΡΡΠ²Π°$PATHΠ½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, Π·Π° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ²Π° ΠΊΡΠ΄Π΅ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½. - ΠΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΡΠ΅Π΄ΠΈ: ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Python Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΡΠ΅Π΄ΠΈ (
venv),/usr/bin/env python3ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Python Π±ΠΈΠ½Π°ΡΠ½ΠΈΡ ΡΠ°ΠΉΠ» Π½Π° virtualenv Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ. - ΠΡΠ΄Π΅ΡΠ° Π·Π°ΡΠΈΡΠ°: ΠΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡΡ Π±ΡΠ΄Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½, ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ
env, ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ hardcoded Π°Π±ΡΠΎΠ»ΡΡΠ΅Π½ ΠΏΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, #!/bin/bash), Π΅ ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΡΠ΅, ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠ°ΠΉΠ» β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΡΠΌ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ, ΠΊΡΠ΄Π΅ΡΠΎ $PATH ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΡΠΈΡΠΊ.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Shebangs Π² Bash ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅: Π‘ΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ°
ΠΠ΅ΠΊΠ° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡΠ΅Π· ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ»Π΅Π½, ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ Bash ΡΠΊΡΠΈΠΏΡ ΠΎΡ Π½ΡΠ»Π°ΡΠ°.
Π‘ΡΡΠΏΠΊΠ° 1: ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»
ΠΠΎΠ»ΡΡΠ΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²Π°ΡΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΠ»ΠΈ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΡΡΠ΅Π· SSH ΠΊΡΠΌ Π²Π°ΡΠΈΡ Linux ΡΡΡΠ²ΡΡ.
Π‘ΡΡΠΏΠΊΠ° 2: Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ² Bash ΡΠΊΡΠΈΠΏΡ ΡΠ°ΠΉΠ»
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΊΠ°ΡΠΎ nano Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ² ΡΠ°ΠΉΠ»:
nano myscript.shΠ‘ΡΡΠΏΠΊΠ° 3: ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ Shebang ΠΈ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°
Π ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ Π½Π° ΡΠ°ΠΉΠ»Π° Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ shebang Π»ΠΈΠ½ΠΈΡΡΠ°, ΠΏΠΎΡΠ»Π΅Π΄Π²Π°Π½Π° ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° Π²Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡ:
#!/bin/bash
# A simple greeting script
echo "Hello, World!"
echo "Current date and time: $(date)"
echo "Running as user: $(whoami)"Π‘ΡΡΠΏΠΊΠ° 4: ΠΠ°ΠΏΠ°Π·Π΅ΡΠ΅ ΠΈ ΠΈΠ·Π»Π΅Π·ΡΠ΅
Π nano, Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ CTRL + X, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Y, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Enter Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ ΠΈ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΠ°ΠΉΠ»Π°.
Π‘ΡΡΠΏΠΊΠ° 5: ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½ΠΎΠ²ΠΎΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π΅ ΡΠ° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ. ΠΠ°ΠΉΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ chmod:
chmod +x myscript.shΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ:
ls -l myscript.shΠ’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°:
-rwxr-xr-x 1 user user 112 Jun 10 14:32 myscript.shΠ‘ΡΡΠΏΠΊΠ° 6: ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ°
ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°:
./myscript.shΠΡΠ°ΠΊΠ²Π°Π½ ΠΈΠ·Ρ ΠΎΠ΄:
Hello, World!
Current date and time: Tue Jun 10 14:32:01 UTC 2025
Running as user: youruser> ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ./ ΠΏΡΠ΅ΡΠΈΠΊΡΡΡ ΠΊΠ°Π·Π²Π° Π½Π° shell Π΄Π° ΡΡΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠ° Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. ΠΠΊΠΎ Π²Π°ΡΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ $PATH, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΠΈΠΌΠ΅.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Shebangs Π² Python ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅: Π‘ΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ°
Python ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π²Π°Ρ ΡΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π», Ρ Π΅Π΄Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π° ΡΠ°Π·Π»ΠΈΠΊΠ° Π² ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Π½Π°ΡΠ° shebang Π»ΠΈΠ½ΠΈΡ.
Π‘ΡΡΠΏΠΊΠ° 1: Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ² ΡΠ°ΠΉΠ» Π½Π° Python ΡΠΊΡΠΈΠΏΡ
nano myscript.pyΠ‘ΡΡΠΏΠΊΠ° 2: ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ Shebang ΠΈ Python ΠΊΠΎΠ΄
#!/usr/bin/env python3
# A simple Python script demonstrating shebang usage
import sys
import platform
print("Hello from Python!")
print(f"Python version: {sys.version}")
print(f"Platform: {platform.system()} {platform.release()}")Π‘ΡΡΠΏΠΊΠ° 3: ΠΠ°ΠΏΠ°Π·Π΅ΡΠ΅, ΠΈΠ·Π»Π΅Π·ΡΠ΅ ΠΈ Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ
# Save and exit nano with CTRL+X, Y, Enter
chmod +x myscript.pyΠ‘ΡΡΠΏΠΊΠ° 4: ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ°
./myscript.pyΠΡΠ°ΠΊΠ²Π°Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ:
Hello from Python!
Python version: 3.11.2 (main, Mar 13 2023, 12:18:29)
Platform: Linux 5.15.0-76-genericΠΠ°Π±Π΅Π»Π΅ΠΆΠ΅ΡΠ΅, ΡΠ΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡΠ΅ΡΠΈΠΊΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Ρ python3 β shebang ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΈΠ·Π±ΠΎΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΎΡ ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ
Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° shebang Π² ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ Π²ΠΈΠΆΠ΄Π°Π½Π΅ΡΠΎ ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΎ ΠΊΡΠΌ ΡΠ΅Π°Π»Π½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ.
Bash: ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ ΡΠΊΡΠΈΠΏΡ Π·Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅
#!/bin/bash
# Automated backup script for web files
BACKUP_DIR="/var/backups/webfiles"
SOURCE_DIR="/var/www/html"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/backup_$TIMESTAMP.tar.gz"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"
echo "Backup completed: $BACKUP_FILE"Python: Π‘ΠΊΡΠΈΠΏΡ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π·Π΄ΡΠ°Π²Π΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°
#!/usr/bin/env python3
import shutil
import psutil
def check_disk_usage(path="/"):
total, used, free = shutil.disk_usage(path)
percent_used = (used / total) * 100
print(f"Disk Usage ({path}): {percent_used:.1f}% used")
if percent_used > 85:
print("WARNING: Disk usage is critically high!")
def check_memory():
mem = psutil.virtual_memory()
print(f"Memory Usage: {mem.percent}% used")
check_disk_usage()
check_memory()Π’Π΅Π·ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΡΠ° Π±Π΅Π·ΡΠ΅Π½Π½ΠΈ ΠΏΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ Π΅Π΄ΠΈΠ½ Shared Web Hosting Π°ΠΊΠ°ΡΠ½Ρ ΠΈΠ»ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Π² Dedicated Servers.
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° Shebang: ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΠΎΡΠ²ΡΡΡΠ΅
ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ ΡΡΡ shebang, Linux ΡΠ΄ΡΠΎΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΡΠΏΠΊΠΈ:
- Π§ΠΈΡΠ° ΠΏΡΡΠ²ΠΈΡ ΡΠ΅Π΄ Π½Π° ΡΠ°ΠΉΠ»Π° ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°
#!ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ°. - ΠΠ°ΡΡΠΈΡΠ° ΠΏΡΡΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° (ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ) ΠΎΡ shebang Π»ΠΈΠ½ΠΈΡΡΠ°.
- ΠΠ·Π²ΠΈΠΊΠ²Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΏΡΠ΅Π΄Π°Π²Π°ΠΉΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΠΈΡ ΡΠ°ΠΉΠ» ΠΊΠ°ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ./myscript.py Π΅ Π²ΡΡΡΠ΅ΡΠ½ΠΎ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π½Π°:
/usr/bin/env python3 ./myscript.pyΠ’ΠΎΠ²Π° Π΅ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° shebang Π΄Π° ΡΡΡΠ±Π²Π° Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° Π±ΡΠ΄Π΅ Π½Π° ΠΏΡΡΠ²ΠΈΡ ΡΠ΅Π΄ Π±Π΅Π· Π²ΠΎΠ΄Π΅ΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ β Π΄ΠΎΡΠΈ Π΅Π΄ΠΈΠ½ Π΅Π΄ΠΈΠ½ ΠΏΡΠ°Π·Π΅Π½ ΡΠ΅Π΄ ΠΏΡΠ΅Π΄ΠΈ Π½Π΅Π³ΠΎ ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ shebang Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½.
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π±Π΅Π· Shebang?
ΠΠΊΠΎ Π½ΡΠΌΠ° shebang, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½ ΡΠΊΡΠΈΠΏΡΡΡ:
- ΠΠΊΠΎ Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ ΠΊΠ°ΡΠΎ
./script.py, ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° (Π½Π°ΠΏΡ. Bash) ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ Π·Π° Python ΠΊΠΎΠ΄. - ΠΠΊΠΎ Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ ΠΊΠ°ΡΠΎ
python3 script.py, shebang Π΅ Π½Π΅ΡΠΌΠ΅ΡΡΠ΅Π½ β Python Π΅ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½. - ΠΠΊΠΎ Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ ΠΊΠ°ΡΠΎ
bash script.sh, ΠΎΡΠ½ΠΎΠ²ΠΎ shebang Π΅ Π·Π°ΠΎΠ±ΠΈΠ΄Π΅Π½.
Shebang ΠΈΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΊΡΠΈΠΏΡΡΡ Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ (Ρ.Π΅. ΠΊΠ°ΡΠΎ ./script).
ΠΠ°ΠΏΡΠ΅Π΄Π½ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π½Π° Shebang
ΠΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ»Π°Π³ΠΎΠ²Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΡΡΠ΅Π· shebang Π»ΠΈΠ½ΠΈΡΡΠ°:
#!/bin/bash -eΠ€Π»Π°Π³ΡΡ -e ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° Bash Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ, Π°ΠΊΠΎ Π½ΡΠΊΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ β ΠΎΠ±ΠΈΡΠ°ΠΉΠ½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ Π² production ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅.
#!/usr/bin/env python3 -uΠ€Π»Π°Π³ΡΡ -u ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°Π²Π° Π½Π΅Π±ΡΡΠ΅ΡΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Ρ
ΠΎΠ΄ Π² Python, ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅.
> ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΊΠΎΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ»Π΅Π΄ ΠΏΡΡΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π² shebang Π»ΠΈΠ½ΠΈΡΡΠ°. ΠΠ° ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π² ΡΠ°ΠΌΠΈΡ ΡΠΊΡΠΈΠΏΡ (Π½Π°ΠΏΡ. set -euo pipefail Π² Bash).
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° env ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π²Π΅ΡΡΠΈΠΈ
#!/usr/bin/env python3.11Π’ΠΎΠ²Π° ΡΠ΅ Π½Π°ΡΠΎΡΠ²Π° ΠΊΡΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Python, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΡΠ΅Π΄ΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΡΠΈΠΈ.
ΠΠΎΠ»ΠΈΠ³Π»ΠΎΡΠ½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅
Π Π½ΡΠΊΠΎΠΈ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΠΈΡΠ°Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π²Π°Π»ΠΈΠ΄Π½ΠΈ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΅Π·ΠΈΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Shebang-ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠΎΠ²Π° ΡΡΠ΅Π· ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½Π΅ ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΡΡΠ²ΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠΎΠ²Π° Π΅ Π½ΠΈΡΠ΅Π²Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ°, ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡΡΠ°, ΠΊΠΎΡΡΠΎ shebang-ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ.
ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° Shebang Π»ΠΈΠ½ΠΈΠΈ
Π‘Π»Π΅Π΄Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π²Π°ΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄ΠΈ, ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΈ ΠΈ Π»Π΅ΡΠ½ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ β ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ.
1. ΠΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ
Π‘ΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΠΉΡΠ΅ shebang Π½Π° Π΅Π·ΠΈΠΊΠ° ΠΈ Π²Π΅ΡΡΠΈΡΡΠ°, ΠΊΠΎΡΡΠΎ Π²Π°ΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈΠ·ΠΈΡΠΊΠ²Π°:
#!/bin/bash # For Bash-specific syntax
#!/bin/sh # For POSIX-compliant shell scripts (more portable)
#!/usr/bin/env python3 # For Python 3 scriptsΠΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΏΡΠΈΠ΅ΠΌΠ°ΠΉΡΠ΅, ΡΠ΅ /bin/sh ΠΈ /bin/bash ΡΠ° Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΠΈ β Π½Π΅ ΡΠ°. Bash ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΌΠ°ΡΠΈΠ²ΠΈ, [[ ]], Π·Π°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ), ΠΊΠΎΠΈΡΠΎ POSIX sh Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°.
2. ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅ /usr/bin/env Π·Π° ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡ
ΠΠ°ΠΊΡΠΎ Π±Π΅ΡΠ΅ ΠΎΠ±ΡΡΠ΄Π΅Π½ΠΎ ΠΏΠΎ-ΡΠ°Π½ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° env ΠΏΡΠ°Π²ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Python Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΡΠ΅Π΄ΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠ°Π½ΠΈ ΠΏΡΡΠΈΡΠ° ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΡΡΡΠ° Π³ΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ.
3. ΠΠΈΠ½Π°Π³ΠΈ Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅
Π‘ΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ Π±Π΅Π· ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΡΡ Ρ Π³ΡΠ΅ΡΠΊΠ° βPermission deniedβ:
chmod +x script.sh
chmod +x script.pyΠΠ° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°:
chmod 755 script.sh4. ΠΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ Π² ΠΎΡΠ΄Π΅Π»Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ~/scripts ΠΈΠ»ΠΈ ~/bin Π·Π° Π»ΠΈΡΠ½ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΈ Ρ Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΊΡΠΌ Π²Π°ΡΠΈΡ $PATH:
mkdir -p ~/bin
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcΠ‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π²ΡΠ΅ΠΊΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΏΠΎΡΡΠ°Π²Π΅Π½ Π² ~/bin, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ ΠΏΠΎ ΠΈΠΌΠ΅ ΠΎΡΠΊΡΠ΄Π΅ΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ.
5. ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΡΠΌΠΈΡΠ»Π΅Π½ΠΈ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°ΠΉΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Ρ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ²Π°Ρ ΡΡΡ Π½Π°ΡΠ° ΡΠ΅Π», ΡΠΏΠΎΡΡΠ΅Π±Π° ΠΈ Π²ΡΠΈΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
#!/bin/bash
# Script: backup_web.sh
# Purpose: Creates timestamped backups of web root
# Usage: ./backup_web.sh
# Dependencies: tar, gzip
# Author: Your Name
# Last Modified: 2025-06-106. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ set ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΏΠΎ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ Bash ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅
ΠΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ Bash ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ shebang:
#!/bin/bash
set -euo pipefail-e: ΠΠ·Ρ ΠΎΠ΄ ΠΏΡΠΈ Π³ΡΠ΅ΡΠΊΠ°-u: Π’ΡΠ΅ΡΠΈΡΠ°ΠΉΡΠ΅ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΊΠ°ΡΠΎ Π³ΡΠ΅ΡΠΊΠΈ-o pipefail: Π₯Π²Π°Π½Π΅ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Ρ ΡΡΡΠ±Π°
7. Π’Π΅ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ
ΠΠΈΠ½Π°Π³ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ Π² ΡΠ°Π·Π²ΠΎΠΉΠ½Π° ΠΈΠ»ΠΈ ΠΏΡΠ΅Ρ ΠΎΠ΄Π½Π° ΡΡΠ΅Π΄Π° ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΡΡΠ΅Π΄Π° Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅, ΠΏΠ»Π°Π½ VPS Hosting ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π΄ΠΎΡΡΡΠΏΠ½Π°, Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½Π° ΠΏΡΡΡΡΠ½ΠΈΡΠ°, ΠΊΠΎΡΡΠΎ ΠΎΡΡΠ°Π·ΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ.
ΠΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΡ Shebang
"Permission Denied" Error
bash: ./myscript.sh: Permission deniedΠ Π΅ΡΠ΅Π½ΠΈΠ΅: Π‘ΠΊΡΠΈΠΏΡΡΡ Π½ΡΠΌΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ chmod +x myscript.sh.
"No Such File or Directory" Error
bash: ./myscript.py: /usr/bin/env: bad interpreter: No such file or directoryΠ Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡΡ, ΠΏΠΎΡΠΎΡΠ΅Π½ Π² shebang, Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΡ. ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Ρ which python3 ΠΈΠ»ΠΈ which bash.
Π‘ΠΊΡΠΈΠΏΡΡΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Ρ Π³ΡΠ΅ΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ
Π‘ΠΈΠΌΠΏΡΠΎΠΌ: Π‘Π΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° Python ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° .sh ΡΠ°ΠΉΠ», ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅: Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΠ΅ ΡΠ΅Π΄ΡΡ shebang Π΅ Π½Π° ΡΠ΅Π΄ 1 Π±Π΅Π· ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ°Π·Π½ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅, ΠΈ ΡΠ΅ ΡΠΎΡΠΈ ΠΊΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ.
Windows Line Endings (rn)
ΠΠΊΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π½Π° Windows ΠΈ Π³ΠΈ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΡΠ΅ Π½Π° Linux, Windows-ΡΡΠΈΠ»Π½ΠΈΡΠ΅ ΠΊΡΠ°ΠΈΡΠ° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΠΎΠ²ΡΠ΅Π΄ΡΡ shebang:
/bin/bash^M: bad interpreterΠ Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΊΡΠ°ΠΈΡΠ°ΡΠ° Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Ρ dos2unix:
dos2unix myscript.shShebang Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠΈ
ΠΠ° Π²ΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Linux-Π±Π°Π·ΠΈΡΠ°Π½Π° Ρ ΠΎΡΡΠΈΠ½Π³ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠ²Π°Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ. Shebangs ΡΠ° Π²Ρ ΠΎΠ΄Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° ΠΊΡΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° β ΠΎΡ ΠΏΡΠΎΡΡΠΈ cron Π·Π°Π΄Π°ΡΠΈ Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ deployment pipeline-ΠΈ.
Π Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° ΠΏΡΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΈ (Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ shebangs) ΠΏΡΠ°Π²ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠΈΠΌΠΎ ΡΠ°Π·Π»ΠΈΠΊΠ°:
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ β ΡΠΊΡΠΈΠΏΡΠ²Π°Π½Π΅ Π½Π°
certbotΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½ΠΈΡΡΠ° ΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡΠΈ. ΠΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΡΡΠ½ΠΎ, ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ SSL Certificates Π·Π° ΠΎΠΏΡΠΎΡΡΠ΅Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. - Π ΠΎΡΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ β Bash ΡΠΊΡΠΈΠΏΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π°ΡΡ ΠΈΠ²ΠΈΡΠ°Ρ ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Ρ ΡΡΠ°ΡΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅ ΠΏΠΎ Π³ΡΠ°ΡΠΈΠΊ.
- Π Π΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ β Python ΡΠΊΡΠΈΠΏΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ ΠΊΡΠΌ MySQL/PostgreSQL, ΠΈΠ·Π²Π°ΠΆΠ΄Π°Ρ Π΄Π°Π½Π½ΠΈ ΠΈ Π³ΠΈ ΠΊΠ°ΡΠ²Π°Ρ Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
- ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° Π·Π΄ΡΠ°Π²Π΅ΡΠΎ β Π‘ΠΊΡΠΈΠΏΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠΊ, ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΡΡΠ°ΡΡΡΠ° Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅, ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΉΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ°Π³ΠΎΠ²Π΅ ΡΠ΅ ΠΏΡΠ΅Π²ΠΈΡΠ°Ρ.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ β Π‘ΠΊΡΠΈΠΏΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ²Π°Ρ ΠΎΡ Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ½ΠΈ ΡΡΡΠ²ΡΡΠΈ.
ΠΠ° ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΠΎ machine learning pipeline-ΠΈ ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ GPU Hosting Π·Π° ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° Python-Π±Π°Π·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ.
ΠΡΡΠ·ΠΎ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ: Shebang Cheat Sheet
# Bash (most common for shell scripts)
#!/bin/bash
# POSIX sh (maximum portability)
#!/bin/sh
# Bash with strict error handling (recommended for production)
#!/bin/bash
set -euo pipefail
# Python 3 (portable, uses PATH)
#!/usr/bin/env python3
# Python 3 with unbuffered output
#!/usr/bin/env python3 -u
# Perl
#!/usr/bin/perl
# Ruby
#!/usr/bin/env ruby
# Node.js
#!/usr/bin/env nodeΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Shebang Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΎΠ±ΠΌΠ°Π½ΡΠΈΠ²ΠΎ ΠΏΡΠΎΡΡΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Linux Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ. ΠΠ²Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° β #! β ΠΈ ΠΏΡΡ ΡΠ° Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° ΠΏΡΠ΅Π²ΡΡΠ½Π΅ΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ°ΠΉΠ» Π² Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°.
Π§ΡΠ΅Π· ΠΎΠ²Π»Π°Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° shebang Π² Bash ΠΈ Python ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, Π²ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π΄Π°:
- ΠΠΈΡΠ΅ΡΠ΅ ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΈ, ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΠ΅Π΄Π°ΡΠ°
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ Ρ ΡΠ²Π΅ΡΠ΅Π½ΠΎΡΡ
- ΠΠ·Π³ΡΠ°ΠΆΠ΄Π°ΡΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°
- Π‘ΡΡΡΡΠ΄Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π΄ΡΡΠ³ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ°Ρ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΡ Π±Π΅Π· Π³Π°Π΄Π°Π΅Π½Π΅
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ Π΅Π΄ΠΈΠ½ ΡΠ΅Π±ΡΠ°ΠΉΡ Π½Π° Shared Web Hosting ΠΈΠ»ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Dedicated Servers, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΈΡΠ΅ ΡΠΌΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π²ΠΈΠ΅ΡΠ΅ ΠΊΠ°ΡΠΎ Linux Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ.
ΠΠ°ΡΠ½Π΅ΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ β Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ° Π΅Π΄Π½Π° Π·Π°Π΄Π°ΡΠ°, ΠΊΠΎΡΡΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΡΡΠ½ΠΎ Π΄Π½Π΅Ρ. ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ shebang, Π·Π°Π΄Π°ΠΉΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅. Π’Π°ΠΊΠ° Π·Π°ΠΏΠΎΡΠ²Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΡΠ»ΠΈΡΠ΅Π½ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ