Bash: Use raw binary in variable as executable?











up vote
2
down vote

favorite
1












I'd like to create a variable containing binary data, then execute in a command. Example:



#!/bin/bash
var="$(cat /bin/sleep)"
"$var" 9999









share|improve this question







New contributor




user321517 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    up vote
    2
    down vote

    favorite
    1












    I'd like to create a variable containing binary data, then execute in a command. Example:



    #!/bin/bash
    var="$(cat /bin/sleep)"
    "$var" 9999









    share|improve this question







    New contributor




    user321517 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      up vote
      2
      down vote

      favorite
      1









      up vote
      2
      down vote

      favorite
      1






      1





      I'd like to create a variable containing binary data, then execute in a command. Example:



      #!/bin/bash
      var="$(cat /bin/sleep)"
      "$var" 9999









      share|improve this question







      New contributor




      user321517 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      I'd like to create a variable containing binary data, then execute in a command. Example:



      #!/bin/bash
      var="$(cat /bin/sleep)"
      "$var" 9999






      linux bash shell ubuntu variable






      share|improve this question







      New contributor




      user321517 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      user321517 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      user321517 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked Nov 17 at 23:59









      user321517

      202




      202




      New contributor




      user321517 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      user321517 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      user321517 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          3
          down vote



          accepted










          You cannot execute a variable like that because:




          • the kernel executes files,

          • the shell can execute command lines stored in variables, but it cannot interpret binary data

          • storing a binary file's contents in a variable will likely not work well, because null bytes may be present in the file (and you can't have null bytes in variables of most shells)

          • even if you used process substitution to get a temporary file with the contents of that variable, process substitution file handles won't be executable


          So you'll have to store the contents in a file, make that file executable, hope that nothing got missed because of a null bytes, and execute that file.






          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',
            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
            });


            }
            });






            user321517 is a new contributor. Be nice, and check out our Code of Conduct.










             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f482431%2fbash-use-raw-binary-in-variable-as-executable%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            3
            down vote



            accepted










            You cannot execute a variable like that because:




            • the kernel executes files,

            • the shell can execute command lines stored in variables, but it cannot interpret binary data

            • storing a binary file's contents in a variable will likely not work well, because null bytes may be present in the file (and you can't have null bytes in variables of most shells)

            • even if you used process substitution to get a temporary file with the contents of that variable, process substitution file handles won't be executable


            So you'll have to store the contents in a file, make that file executable, hope that nothing got missed because of a null bytes, and execute that file.






            share|improve this answer

























              up vote
              3
              down vote



              accepted










              You cannot execute a variable like that because:




              • the kernel executes files,

              • the shell can execute command lines stored in variables, but it cannot interpret binary data

              • storing a binary file's contents in a variable will likely not work well, because null bytes may be present in the file (and you can't have null bytes in variables of most shells)

              • even if you used process substitution to get a temporary file with the contents of that variable, process substitution file handles won't be executable


              So you'll have to store the contents in a file, make that file executable, hope that nothing got missed because of a null bytes, and execute that file.






              share|improve this answer























                up vote
                3
                down vote



                accepted







                up vote
                3
                down vote



                accepted






                You cannot execute a variable like that because:




                • the kernel executes files,

                • the shell can execute command lines stored in variables, but it cannot interpret binary data

                • storing a binary file's contents in a variable will likely not work well, because null bytes may be present in the file (and you can't have null bytes in variables of most shells)

                • even if you used process substitution to get a temporary file with the contents of that variable, process substitution file handles won't be executable


                So you'll have to store the contents in a file, make that file executable, hope that nothing got missed because of a null bytes, and execute that file.






                share|improve this answer












                You cannot execute a variable like that because:




                • the kernel executes files,

                • the shell can execute command lines stored in variables, but it cannot interpret binary data

                • storing a binary file's contents in a variable will likely not work well, because null bytes may be present in the file (and you can't have null bytes in variables of most shells)

                • even if you used process substitution to get a temporary file with the contents of that variable, process substitution file handles won't be executable


                So you'll have to store the contents in a file, make that file executable, hope that nothing got missed because of a null bytes, and execute that file.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 18 at 0:52









                muru

                35.1k581154




                35.1k581154






















                    user321517 is a new contributor. Be nice, and check out our Code of Conduct.










                     

                    draft saved


                    draft discarded


















                    user321517 is a new contributor. Be nice, and check out our Code of Conduct.













                    user321517 is a new contributor. Be nice, and check out our Code of Conduct.












                    user321517 is a new contributor. Be nice, and check out our Code of Conduct.















                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f482431%2fbash-use-raw-binary-in-variable-as-executable%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

                    Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

                    ComboBox Display Member on multiple fields

                    Is it possible to collect Nectar points via Trainline?