Do we need to define the shell on file that include only functions?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP












1














I am wondering if we need to add shell title:



#!/bin/bash


on a script, second.sh, which only defines a function, and is called from another script, script.sh.



For example, with script.sh containing



#!/bin/bash

source second.sh

func1 "make amerika great again "

echo $I_AM_SAY


and second.sh containing only a function that is called from the first script:



X=soon

function func1
fun=$1
I_AM_SAY=$fun$X



Do we need to define second.sh instead as:



#!/bin/bash
X=soon

function func1
fun=$1
I_AM_SAY=$fun$X



or as:



#!/usr/bin/env bash

X=soon

function func1
fun=$1
I_AM_SAY=$fun$X










share|improve this question




























    1














    I am wondering if we need to add shell title:



    #!/bin/bash


    on a script, second.sh, which only defines a function, and is called from another script, script.sh.



    For example, with script.sh containing



    #!/bin/bash

    source second.sh

    func1 "make amerika great again "

    echo $I_AM_SAY


    and second.sh containing only a function that is called from the first script:



    X=soon

    function func1
    fun=$1
    I_AM_SAY=$fun$X



    Do we need to define second.sh instead as:



    #!/bin/bash
    X=soon

    function func1
    fun=$1
    I_AM_SAY=$fun$X



    or as:



    #!/usr/bin/env bash

    X=soon

    function func1
    fun=$1
    I_AM_SAY=$fun$X










    share|improve this question


























      1












      1








      1


      1





      I am wondering if we need to add shell title:



      #!/bin/bash


      on a script, second.sh, which only defines a function, and is called from another script, script.sh.



      For example, with script.sh containing



      #!/bin/bash

      source second.sh

      func1 "make amerika great again "

      echo $I_AM_SAY


      and second.sh containing only a function that is called from the first script:



      X=soon

      function func1
      fun=$1
      I_AM_SAY=$fun$X



      Do we need to define second.sh instead as:



      #!/bin/bash
      X=soon

      function func1
      fun=$1
      I_AM_SAY=$fun$X



      or as:



      #!/usr/bin/env bash

      X=soon

      function func1
      fun=$1
      I_AM_SAY=$fun$X










      share|improve this question















      I am wondering if we need to add shell title:



      #!/bin/bash


      on a script, second.sh, which only defines a function, and is called from another script, script.sh.



      For example, with script.sh containing



      #!/bin/bash

      source second.sh

      func1 "make amerika great again "

      echo $I_AM_SAY


      and second.sh containing only a function that is called from the first script:



      X=soon

      function func1
      fun=$1
      I_AM_SAY=$fun$X



      Do we need to define second.sh instead as:



      #!/bin/bash
      X=soon

      function func1
      fun=$1
      I_AM_SAY=$fun$X



      or as:



      #!/usr/bin/env bash

      X=soon

      function func1
      fun=$1
      I_AM_SAY=$fun$X







      bash shell-script function






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Dec 13 at 10:47









      Stephen Kitt

      163k24362441




      163k24362441










      asked Dec 13 at 10:37









      yael

      2,42112059




      2,42112059




















          2 Answers
          2






          active

          oldest

          votes


















          3














          No, you don’t need a shebang line: the running shell sources the script directly, it doesn’t start a new shell (which is the whole point of sourcing a script), so neither it nor the kernel need to know which shell to use to run it.



          If you want to prevent the second.sh script from being invoked at all, you can add a



          #!/usr/bin/false


          shebang line.






          share|improve this answer




















          • thank you , why you put the strange hat on your head?
            – yael
            Dec 13 at 10:51










          • winterbash2018.stackexchange.com
            – Stephen Kitt
            Dec 13 at 10:51


















          1














          If you only source the file from another script, the hashbang doesn't get interpreted (it's just a comment there). It might work as a comment for the reader to remind them that the script uses functionality specific to a particular shell, though. Of course, you should mention that in plain text in comments too, since, you do have a description of your script in a comment near the top of the file anyway, right?






          share|improve this answer




















            Your Answer








            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "106"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f487734%2fdo-we-need-to-define-the-shell-on-file-that-include-only-functions%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            3














            No, you don’t need a shebang line: the running shell sources the script directly, it doesn’t start a new shell (which is the whole point of sourcing a script), so neither it nor the kernel need to know which shell to use to run it.



            If you want to prevent the second.sh script from being invoked at all, you can add a



            #!/usr/bin/false


            shebang line.






            share|improve this answer




















            • thank you , why you put the strange hat on your head?
              – yael
              Dec 13 at 10:51










            • winterbash2018.stackexchange.com
              – Stephen Kitt
              Dec 13 at 10:51















            3














            No, you don’t need a shebang line: the running shell sources the script directly, it doesn’t start a new shell (which is the whole point of sourcing a script), so neither it nor the kernel need to know which shell to use to run it.



            If you want to prevent the second.sh script from being invoked at all, you can add a



            #!/usr/bin/false


            shebang line.






            share|improve this answer




















            • thank you , why you put the strange hat on your head?
              – yael
              Dec 13 at 10:51










            • winterbash2018.stackexchange.com
              – Stephen Kitt
              Dec 13 at 10:51













            3












            3








            3






            No, you don’t need a shebang line: the running shell sources the script directly, it doesn’t start a new shell (which is the whole point of sourcing a script), so neither it nor the kernel need to know which shell to use to run it.



            If you want to prevent the second.sh script from being invoked at all, you can add a



            #!/usr/bin/false


            shebang line.






            share|improve this answer












            No, you don’t need a shebang line: the running shell sources the script directly, it doesn’t start a new shell (which is the whole point of sourcing a script), so neither it nor the kernel need to know which shell to use to run it.



            If you want to prevent the second.sh script from being invoked at all, you can add a



            #!/usr/bin/false


            shebang line.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Dec 13 at 10:43









            Stephen Kitt

            163k24362441




            163k24362441











            • thank you , why you put the strange hat on your head?
              – yael
              Dec 13 at 10:51










            • winterbash2018.stackexchange.com
              – Stephen Kitt
              Dec 13 at 10:51
















            • thank you , why you put the strange hat on your head?
              – yael
              Dec 13 at 10:51










            • winterbash2018.stackexchange.com
              – Stephen Kitt
              Dec 13 at 10:51















            thank you , why you put the strange hat on your head?
            – yael
            Dec 13 at 10:51




            thank you , why you put the strange hat on your head?
            – yael
            Dec 13 at 10:51












            winterbash2018.stackexchange.com
            – Stephen Kitt
            Dec 13 at 10:51




            winterbash2018.stackexchange.com
            – Stephen Kitt
            Dec 13 at 10:51













            1














            If you only source the file from another script, the hashbang doesn't get interpreted (it's just a comment there). It might work as a comment for the reader to remind them that the script uses functionality specific to a particular shell, though. Of course, you should mention that in plain text in comments too, since, you do have a description of your script in a comment near the top of the file anyway, right?






            share|improve this answer

























              1














              If you only source the file from another script, the hashbang doesn't get interpreted (it's just a comment there). It might work as a comment for the reader to remind them that the script uses functionality specific to a particular shell, though. Of course, you should mention that in plain text in comments too, since, you do have a description of your script in a comment near the top of the file anyway, right?






              share|improve this answer























                1












                1








                1






                If you only source the file from another script, the hashbang doesn't get interpreted (it's just a comment there). It might work as a comment for the reader to remind them that the script uses functionality specific to a particular shell, though. Of course, you should mention that in plain text in comments too, since, you do have a description of your script in a comment near the top of the file anyway, right?






                share|improve this answer












                If you only source the file from another script, the hashbang doesn't get interpreted (it's just a comment there). It might work as a comment for the reader to remind them that the script uses functionality specific to a particular shell, though. Of course, you should mention that in plain text in comments too, since, you do have a description of your script in a comment near the top of the file anyway, right?







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Dec 13 at 10:43









                ilkkachu

                55.5k783151




                55.5k783151



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Unix & Linux Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f487734%2fdo-we-need-to-define-the-shell-on-file-that-include-only-functions%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown






                    Popular posts from this blog

                    How to check contact read email or not when send email to Individual?

                    Displaying single band from multi-band raster using QGIS

                    How many registers does an x86_64 CPU actually have?