String `!23` is replaced with `docker` in command line





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







15















I have a Maven command with the parameter:



mvn test -Dcommon_password=!23foo


This command is being executed as



mvn test -Dcommon_password=dockerfoo


I.e. !23 is being substituted with docker.
Why does this happen and how can I avoid it?










share|improve this question































    15















    I have a Maven command with the parameter:



    mvn test -Dcommon_password=!23foo


    This command is being executed as



    mvn test -Dcommon_password=dockerfoo


    I.e. !23 is being substituted with docker.
    Why does this happen and how can I avoid it?










    share|improve this question



























      15












      15








      15


      1






      I have a Maven command with the parameter:



      mvn test -Dcommon_password=!23foo


      This command is being executed as



      mvn test -Dcommon_password=dockerfoo


      I.e. !23 is being substituted with docker.
      Why does this happen and how can I avoid it?










      share|improve this question
















      I have a Maven command with the parameter:



      mvn test -Dcommon_password=!23foo


      This command is being executed as



      mvn test -Dcommon_password=dockerfoo


      I.e. !23 is being substituted with docker.
      Why does this happen and how can I avoid it?







      bash






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited yesterday









      Stephen Kitt

      182k25418496




      182k25418496










      asked yesterday









      Vitalii PlagovVitalii Plagov

      329311




      329311






















          1 Answer
          1






          active

          oldest

          votes


















          39














          This is history expansion: !23 is replaced with the 23rd command in your history.



          To avoid this, use single quotes:



          mvn test '-Dcommon_password=!23foo'





          share|improve this answer



















          • 4





            or disable it completely with set +H/set +o histexpand

            – ilkkachu
            yesterday






          • 9





            This is a password that can potentially contain all sorts of shell metacharacters. Properly quoting and escaping as in M. Kitt's answer is better than disabling just one of the possibilities that could occur. Of course, not having a password in process arguments in the first place would be better still. (-:

            – JdeBP
            16 hours ago













          • @JdeBP in my question I showed a password in a plain text just for simplicity reason. In a real project that argument takes the value from a Jenkins secret credential. So it’s masked and safe.

            – Vitalii Plagov
            9 hours ago












          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%2f512794%2fstring-23-is-replaced-with-docker-in-command-line%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









          39














          This is history expansion: !23 is replaced with the 23rd command in your history.



          To avoid this, use single quotes:



          mvn test '-Dcommon_password=!23foo'





          share|improve this answer



















          • 4





            or disable it completely with set +H/set +o histexpand

            – ilkkachu
            yesterday






          • 9





            This is a password that can potentially contain all sorts of shell metacharacters. Properly quoting and escaping as in M. Kitt's answer is better than disabling just one of the possibilities that could occur. Of course, not having a password in process arguments in the first place would be better still. (-:

            – JdeBP
            16 hours ago













          • @JdeBP in my question I showed a password in a plain text just for simplicity reason. In a real project that argument takes the value from a Jenkins secret credential. So it’s masked and safe.

            – Vitalii Plagov
            9 hours ago
















          39














          This is history expansion: !23 is replaced with the 23rd command in your history.



          To avoid this, use single quotes:



          mvn test '-Dcommon_password=!23foo'





          share|improve this answer



















          • 4





            or disable it completely with set +H/set +o histexpand

            – ilkkachu
            yesterday






          • 9





            This is a password that can potentially contain all sorts of shell metacharacters. Properly quoting and escaping as in M. Kitt's answer is better than disabling just one of the possibilities that could occur. Of course, not having a password in process arguments in the first place would be better still. (-:

            – JdeBP
            16 hours ago













          • @JdeBP in my question I showed a password in a plain text just for simplicity reason. In a real project that argument takes the value from a Jenkins secret credential. So it’s masked and safe.

            – Vitalii Plagov
            9 hours ago














          39












          39








          39







          This is history expansion: !23 is replaced with the 23rd command in your history.



          To avoid this, use single quotes:



          mvn test '-Dcommon_password=!23foo'





          share|improve this answer













          This is history expansion: !23 is replaced with the 23rd command in your history.



          To avoid this, use single quotes:



          mvn test '-Dcommon_password=!23foo'






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered yesterday









          Stephen KittStephen Kitt

          182k25418496




          182k25418496








          • 4





            or disable it completely with set +H/set +o histexpand

            – ilkkachu
            yesterday






          • 9





            This is a password that can potentially contain all sorts of shell metacharacters. Properly quoting and escaping as in M. Kitt's answer is better than disabling just one of the possibilities that could occur. Of course, not having a password in process arguments in the first place would be better still. (-:

            – JdeBP
            16 hours ago













          • @JdeBP in my question I showed a password in a plain text just for simplicity reason. In a real project that argument takes the value from a Jenkins secret credential. So it’s masked and safe.

            – Vitalii Plagov
            9 hours ago














          • 4





            or disable it completely with set +H/set +o histexpand

            – ilkkachu
            yesterday






          • 9





            This is a password that can potentially contain all sorts of shell metacharacters. Properly quoting and escaping as in M. Kitt's answer is better than disabling just one of the possibilities that could occur. Of course, not having a password in process arguments in the first place would be better still. (-:

            – JdeBP
            16 hours ago













          • @JdeBP in my question I showed a password in a plain text just for simplicity reason. In a real project that argument takes the value from a Jenkins secret credential. So it’s masked and safe.

            – Vitalii Plagov
            9 hours ago








          4




          4





          or disable it completely with set +H/set +o histexpand

          – ilkkachu
          yesterday





          or disable it completely with set +H/set +o histexpand

          – ilkkachu
          yesterday




          9




          9





          This is a password that can potentially contain all sorts of shell metacharacters. Properly quoting and escaping as in M. Kitt's answer is better than disabling just one of the possibilities that could occur. Of course, not having a password in process arguments in the first place would be better still. (-:

          – JdeBP
          16 hours ago







          This is a password that can potentially contain all sorts of shell metacharacters. Properly quoting and escaping as in M. Kitt's answer is better than disabling just one of the possibilities that could occur. Of course, not having a password in process arguments in the first place would be better still. (-:

          – JdeBP
          16 hours ago















          @JdeBP in my question I showed a password in a plain text just for simplicity reason. In a real project that argument takes the value from a Jenkins secret credential. So it’s masked and safe.

          – Vitalii Plagov
          9 hours ago





          @JdeBP in my question I showed a password in a plain text just for simplicity reason. In a real project that argument takes the value from a Jenkins secret credential. So it’s masked and safe.

          – Vitalii Plagov
          9 hours ago


















          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.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f512794%2fstring-23-is-replaced-with-docker-in-command-line%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 did Captain America manage to do this?

          迪纳利

          南乌拉尔铁路局