Visual Studio Code terminal shell vs task shell missing rvm












1















I use RVM to change Ruby versions in my Mac-based development environment.



Inside Visual Studio Code, when I open a regular Terminal tab, I'm dropped into a bash login shell with the -l option, per the standard default configuration, and as documented here:



// VSCode default settings
{
"terminal.integrated.shell.osx": "/bin/bash",
"terminal.integrated.shellArgs.osx": [
"-l"
]
}


The RVM command executed manually from VSCode Terminal gives me the expected ruby version for this project by default.



$ rvm list
ruby-2.0.0-p648 [ x86_64 ]
ruby-2.1.10 [ x86_64 ]
ruby-2.1.5 [ x86_64 ]
ruby-2.2.10 [ x86_64 ]
ruby-2.2.5 [ x86_64 ]
ruby-2.3.0 [ x86_64 ]
* ruby-2.3.1 [ x86_64 ]
=> ruby-2.3.7 [ x86_64 ]

# => - current
# =* - current && default
# * - default


However, when I setup a .vscode/tasks.json file to execute that same command the Ruby version is NOT the correct version, but the default one on the system. Futhermore, I'm unable to actually use rvm use to switch versions (see error message below)



{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Check for RVM",
"type": "shell",
"command": "rvm list && rvm use 2.3.7",
"group": {
"kind": "test",
"isDefault": true
}
}
}
}


Output of task execution, with error message about not having a correct login shell.



> Executing task: rvm list && rvm use 2.3.7 <

ruby-2.0.0-p648 [ x86_64 ]
ruby-2.1.10 [ x86_64 ]
ruby-2.1.5 [ x86_64 ]
ruby-2.2.10 [ x86_64 ]
ruby-2.2.5 [ x86_64 ]
ruby-2.3.0 [ x86_64 ]
=* ruby-2.3.1 [ x86_64 ]
ruby-2.3.7 [ x86_64 ]

# => - current
# =* - current && default
# * - default


RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for an example.


Terminal will be reused by tasks, press any key to close it.


I've even tried specifically adding the -l bash command option as an argument in the Task's configuration, but this does not work.



  "options": {
"shell": {
"args": "-l"
}
}


My understanding, after reading through this issue is that the Terminal shell config and the Task shell config is one and the same, so is there some other underlying inconsistency between Terminal shell and Task shell that I'm missing? If not, then what is it about RVM that prevents it from working inside a Task shell?










share|improve this question





























    1















    I use RVM to change Ruby versions in my Mac-based development environment.



    Inside Visual Studio Code, when I open a regular Terminal tab, I'm dropped into a bash login shell with the -l option, per the standard default configuration, and as documented here:



    // VSCode default settings
    {
    "terminal.integrated.shell.osx": "/bin/bash",
    "terminal.integrated.shellArgs.osx": [
    "-l"
    ]
    }


    The RVM command executed manually from VSCode Terminal gives me the expected ruby version for this project by default.



    $ rvm list
    ruby-2.0.0-p648 [ x86_64 ]
    ruby-2.1.10 [ x86_64 ]
    ruby-2.1.5 [ x86_64 ]
    ruby-2.2.10 [ x86_64 ]
    ruby-2.2.5 [ x86_64 ]
    ruby-2.3.0 [ x86_64 ]
    * ruby-2.3.1 [ x86_64 ]
    => ruby-2.3.7 [ x86_64 ]

    # => - current
    # =* - current && default
    # * - default


    However, when I setup a .vscode/tasks.json file to execute that same command the Ruby version is NOT the correct version, but the default one on the system. Futhermore, I'm unable to actually use rvm use to switch versions (see error message below)



    {
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
    {
    "label": "Check for RVM",
    "type": "shell",
    "command": "rvm list && rvm use 2.3.7",
    "group": {
    "kind": "test",
    "isDefault": true
    }
    }
    }
    }


    Output of task execution, with error message about not having a correct login shell.



    > Executing task: rvm list && rvm use 2.3.7 <

    ruby-2.0.0-p648 [ x86_64 ]
    ruby-2.1.10 [ x86_64 ]
    ruby-2.1.5 [ x86_64 ]
    ruby-2.2.10 [ x86_64 ]
    ruby-2.2.5 [ x86_64 ]
    ruby-2.3.0 [ x86_64 ]
    =* ruby-2.3.1 [ x86_64 ]
    ruby-2.3.7 [ x86_64 ]

    # => - current
    # =* - current && default
    # * - default


    RVM is not a function, selecting rubies with 'rvm use ...' will not work.

    You need to change your terminal emulator preferences to allow login shell.
    Sometimes it is required to use `/bin/bash --login` as the command.
    Please visit https://rvm.io/integration/gnome-terminal/ for an example.


    Terminal will be reused by tasks, press any key to close it.


    I've even tried specifically adding the -l bash command option as an argument in the Task's configuration, but this does not work.



      "options": {
    "shell": {
    "args": "-l"
    }
    }


    My understanding, after reading through this issue is that the Terminal shell config and the Task shell config is one and the same, so is there some other underlying inconsistency between Terminal shell and Task shell that I'm missing? If not, then what is it about RVM that prevents it from working inside a Task shell?










    share|improve this question



























      1












      1








      1








      I use RVM to change Ruby versions in my Mac-based development environment.



      Inside Visual Studio Code, when I open a regular Terminal tab, I'm dropped into a bash login shell with the -l option, per the standard default configuration, and as documented here:



      // VSCode default settings
      {
      "terminal.integrated.shell.osx": "/bin/bash",
      "terminal.integrated.shellArgs.osx": [
      "-l"
      ]
      }


      The RVM command executed manually from VSCode Terminal gives me the expected ruby version for this project by default.



      $ rvm list
      ruby-2.0.0-p648 [ x86_64 ]
      ruby-2.1.10 [ x86_64 ]
      ruby-2.1.5 [ x86_64 ]
      ruby-2.2.10 [ x86_64 ]
      ruby-2.2.5 [ x86_64 ]
      ruby-2.3.0 [ x86_64 ]
      * ruby-2.3.1 [ x86_64 ]
      => ruby-2.3.7 [ x86_64 ]

      # => - current
      # =* - current && default
      # * - default


      However, when I setup a .vscode/tasks.json file to execute that same command the Ruby version is NOT the correct version, but the default one on the system. Futhermore, I'm unable to actually use rvm use to switch versions (see error message below)



      {
      // See https://go.microsoft.com/fwlink/?LinkId=733558
      // for the documentation about the tasks.json format
      "version": "2.0.0",
      "tasks": [
      {
      "label": "Check for RVM",
      "type": "shell",
      "command": "rvm list && rvm use 2.3.7",
      "group": {
      "kind": "test",
      "isDefault": true
      }
      }
      }
      }


      Output of task execution, with error message about not having a correct login shell.



      > Executing task: rvm list && rvm use 2.3.7 <

      ruby-2.0.0-p648 [ x86_64 ]
      ruby-2.1.10 [ x86_64 ]
      ruby-2.1.5 [ x86_64 ]
      ruby-2.2.10 [ x86_64 ]
      ruby-2.2.5 [ x86_64 ]
      ruby-2.3.0 [ x86_64 ]
      =* ruby-2.3.1 [ x86_64 ]
      ruby-2.3.7 [ x86_64 ]

      # => - current
      # =* - current && default
      # * - default


      RVM is not a function, selecting rubies with 'rvm use ...' will not work.

      You need to change your terminal emulator preferences to allow login shell.
      Sometimes it is required to use `/bin/bash --login` as the command.
      Please visit https://rvm.io/integration/gnome-terminal/ for an example.


      Terminal will be reused by tasks, press any key to close it.


      I've even tried specifically adding the -l bash command option as an argument in the Task's configuration, but this does not work.



        "options": {
      "shell": {
      "args": "-l"
      }
      }


      My understanding, after reading through this issue is that the Terminal shell config and the Task shell config is one and the same, so is there some other underlying inconsistency between Terminal shell and Task shell that I'm missing? If not, then what is it about RVM that prevents it from working inside a Task shell?










      share|improve this question
















      I use RVM to change Ruby versions in my Mac-based development environment.



      Inside Visual Studio Code, when I open a regular Terminal tab, I'm dropped into a bash login shell with the -l option, per the standard default configuration, and as documented here:



      // VSCode default settings
      {
      "terminal.integrated.shell.osx": "/bin/bash",
      "terminal.integrated.shellArgs.osx": [
      "-l"
      ]
      }


      The RVM command executed manually from VSCode Terminal gives me the expected ruby version for this project by default.



      $ rvm list
      ruby-2.0.0-p648 [ x86_64 ]
      ruby-2.1.10 [ x86_64 ]
      ruby-2.1.5 [ x86_64 ]
      ruby-2.2.10 [ x86_64 ]
      ruby-2.2.5 [ x86_64 ]
      ruby-2.3.0 [ x86_64 ]
      * ruby-2.3.1 [ x86_64 ]
      => ruby-2.3.7 [ x86_64 ]

      # => - current
      # =* - current && default
      # * - default


      However, when I setup a .vscode/tasks.json file to execute that same command the Ruby version is NOT the correct version, but the default one on the system. Futhermore, I'm unable to actually use rvm use to switch versions (see error message below)



      {
      // See https://go.microsoft.com/fwlink/?LinkId=733558
      // for the documentation about the tasks.json format
      "version": "2.0.0",
      "tasks": [
      {
      "label": "Check for RVM",
      "type": "shell",
      "command": "rvm list && rvm use 2.3.7",
      "group": {
      "kind": "test",
      "isDefault": true
      }
      }
      }
      }


      Output of task execution, with error message about not having a correct login shell.



      > Executing task: rvm list && rvm use 2.3.7 <

      ruby-2.0.0-p648 [ x86_64 ]
      ruby-2.1.10 [ x86_64 ]
      ruby-2.1.5 [ x86_64 ]
      ruby-2.2.10 [ x86_64 ]
      ruby-2.2.5 [ x86_64 ]
      ruby-2.3.0 [ x86_64 ]
      =* ruby-2.3.1 [ x86_64 ]
      ruby-2.3.7 [ x86_64 ]

      # => - current
      # =* - current && default
      # * - default


      RVM is not a function, selecting rubies with 'rvm use ...' will not work.

      You need to change your terminal emulator preferences to allow login shell.
      Sometimes it is required to use `/bin/bash --login` as the command.
      Please visit https://rvm.io/integration/gnome-terminal/ for an example.


      Terminal will be reused by tasks, press any key to close it.


      I've even tried specifically adding the -l bash command option as an argument in the Task's configuration, but this does not work.



        "options": {
      "shell": {
      "args": "-l"
      }
      }


      My understanding, after reading through this issue is that the Terminal shell config and the Task shell config is one and the same, so is there some other underlying inconsistency between Terminal shell and Task shell that I'm missing? If not, then what is it about RVM that prevents it from working inside a Task shell?







      shell visual-studio-code rvm






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 23 '18 at 20:53







      JamesWilson

















      asked Nov 22 '18 at 21:53









      JamesWilsonJamesWilson

      582523




      582523
























          0






          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          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: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          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%2fstackoverflow.com%2fquestions%2f53438369%2fvisual-studio-code-terminal-shell-vs-task-shell-missing-rvm%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • 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%2fstackoverflow.com%2fquestions%2f53438369%2fvisual-studio-code-terminal-shell-vs-task-shell-missing-rvm%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

          Wiesbaden

          Marschland

          Dieringhausen