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












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

      163k24364443




      163k24364443










      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

            163k24364443




            163k24364443












            • 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

                    Morgemoulin

                    Scott Moir

                    Souastre