එය වඩා හොඳ නොවේ.
මෙහි ඇති වාසිය #!/usr/bin/env python
නම්, එය python
පරිශීලකයාගේ පළමුව පෙනෙන ඕනෑම ක්රියාත්මක කළ හැකි දෙයක් භාවිතා කිරීමයි $PATH
.
මෙම අවාසිය පිළිබඳ #!/usr/bin/env python
එය ඕනෑම දෙයක් භාවිත වේ python
පළමු පරිශීලක දී ක්රියාත්මක දර්ශණය $PATH
.
එයින් අදහස් කරන්නේ තිර රචනය ක්රියාත්මක කරන්නේ කවුරුන්ද යන්න මත පදනම්ව වෙනස් ලෙස හැසිරවිය හැකි බවයි. එක් පරිශීලකයෙකු සඳහා, එය /usr/bin/python
මෙහෙයුම් පද්ධතිය සමඟ ස්ථාපනය කර ඇති දේ භාවිතා කරයි . තවත් කෙනෙකුට, එය /home/phred/bin/python
නිවැරදිව ක්රියා නොකරන අත්හදා බැලීමක් භාවිතා කරයි .
නම් සහ python
පමණක් ස්ථාපනය කර /usr/local/bin
, නැති වූ පරිශීලක /usr/local/bin
දී $PATH
පවා කේත රචනය ක්රියාත්මක කිරීමට නොහැකි වනු ඇත. (බොහෝ විට එය නවීන පද්ධතිවල එතරම් ඉඩක් නැත, නමුත් එය වඩාත් අපැහැදිලි පරිවර්තකයෙකුට පහසුවෙන් සිදුවිය හැකිය.)
විශේෂිත පද්ධතියක#!/usr/bin/python
ස්ක්රිප්ට් ධාවනය කිරීමට භාවිතා කරන්නේ කුමන පරිවර්තකයද යන්න නිශ්චිතව සඳහන් කිරීමෙන් .
තවත් විභව ගැටළුවක් නම්, #!/usr/bin/env
උපක්රමය මඟින් ඔබට පරිවර්තකයාට තර්ක ඉදිරිපත් කිරීමට ඉඩ නොදීමයි (පිටපතේ නම හැර, එය ව්යංගයෙන් සම්මත වේ). මෙය සාමාන්යයෙන් ප්රශ්නයක් නොවේ, නමුත් එය විය හැකිය. බොහෝ පර්ල් ස්ක්රිප්ට් සමඟ ලියා ඇත #!/usr/bin/perl -w
, නමුත් use warnings;
මේ දිනවල නිර්දේශිත ප්රතිස්ථාපනය වේ. Csh ස්ක්රිප්ට් භාවිතා කළ යුතුය #!/bin/csh -f
- නමුත් csh ස්ක්රිප්ට් මුලින් නිර්දේශ නොකරයි . නමුත් වෙනත් උදාහරණ තිබිය හැකිය.
මම නව පද්ධතියක ගිණුමක් ආරම්භ කරන විට ස්ථාපනය කරන පුද්ගලික ප්රභව පාලන පද්ධතියක පර්ල් ස්ක්රිප්ට් ගණනාවක් තිබේ. මම #!
එක් එක් ස්ක්රිප්ටයේ රේඛාව මගේ ස්ථාපනය කරන විට එය වෙනස් කරන ස්ථාපක ස්ක්රිප්ට් එකක් භාවිතා කරමි $HOME/bin
. (මට #!/usr/bin/perl
මෑතකදී හැර වෙනත් කිසිවක් භාවිතා කිරීමට සිදු වී නැත ; එය පෙරල් බොහෝ විට පෙරනිමියෙන් ස්ථාපනය නොකළ කාලයට දිව යයි.)
සුළු කරුණක්: #!/usr/bin/env
උපක්රමය env
විධාන ලෙස විධානය අනිසි ලෙස භාවිතා කිරීමකි , එය මුලින් අදහස් කළේ (නමට අනුව) වෙනස් කළ පරිසරයක් සහිත විධානයක් ඉල්ලා සිටීමයි. තවද, සමහර පැරණි පද්ධතිවල (සන් ඕඑස් 4 ද ඇතුළුව, මා නිවැරදිව සිහිපත් කළහොත්) env
විධානය නොතිබුණි /usr/bin
. මේ දෙකම සැලකිය යුතු කරුණක් විය නොහැක. env
මේ ආකාරයෙන් ක්රියා කරයි, බොහෝ ස්ක්රිප්ට් #!/usr/bin/env
උපක්රමය භාවිතා කරයි , සහ මෙහෙයුම්කරුවන් එය බිඳ දැමීමට කිසිවක් නොකරනු ඇත. එය විය හැකි ඔබ ඔබේ තිර රචනය ඇත්තටම පැරණි පද්ධතිය මත ක්රියාත්මක කිරීමට අවශ්ය නම් ප්රශ්නයක්, නමුත්, පසුව, ඔබට එය කෙසේ හෝ වෙනස් කිරීමට අවශ්ය කිරීමට ඉඩ ඇති.
විය හැකි තවත් කාරණයක් නම්, (අදහස් දැක්වීමේදී එය පෙන්වා දීම ගැන සොපලාජෝ ඩි ඇරියරෙස්ට ස්තූතියි) ක්රෝන් රැකියා සීමිත පරිසරයක් සමඟ ක්රියාත්මක වීමයි. විශේෂයෙන්, $PATH
සාමාන්යයෙන් එවැනි දෙයක් /usr/bin:/bin
. එබැවින් පරිවර්තකය අඩංගු නාමාවලිය එම නාමාවලි වලින් එකක සිදු නොවන්නේ නම්, එය $PATH
පරිශීලක කවචයක ඔබගේ පෙරනිමියෙන් වුවද, /usr/bin/env
උපක්රමය ක්රියා නොකරනු ඇත. ඔබට නිශ්චිත මාර්ගය නියම කළ හැකිය, නැතහොත් සැකසීමට ඔබේ හරස්කඩට රේඛාවක් එක් කළ හැකිය $PATH
( man 5 crontab
විස්තර සඳහා).