Cannot Open Visual Studio Code

I've installed VS Code on my laptop with Ubuntu 16.04 LTS. I've tried multiple installation methods with identical results; most recently, I followed the "new" instructions from Cactux here. I've tried opening the application two ways to no effect.

  • When I open the program from 'Applications', the icon shows in the launcher for approximately 15 seconds and then disappears. No error pops up.
  • When I open a terminal and type code, the command does nothing and I get a new prompt in less than a second.

I'm struggling with what to try since I'm relatively new to Linux. which code yields /usr/bin/code, which is a bash script. This is where I get outside my depth.

Contents of script

/usr/bin$ cat code
#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.

# If root, ensure that --user-data-dir or --file-write is specified
if [ "$(id -u)" = "0" ]; then
    for i in $@
    do
        if [[ $i == --user-data-dir || $i == --user-data-dir=* || $i == --file-write ]]; then
            CAN_LAUNCH_AS_ROOT=1
        fi
    done
    if [ -z $CAN_LAUNCH_AS_ROOT ]; then
        echo "You are trying to start vscode as a super user which is not recommended. If you really want to, you must specify an alternate user data directory using the --user-data-dir argument." 1>&2
        exit 1
    fi
fi

if [ ! -L $0 ]; then
    # if path is not a symlink, find relatively
    VSCODE_PATH="$(dirname $0)/.."
else
    if which readlink >/dev/null; then
        # if readlink exists, follow the symlink and find relatively
        VSCODE_PATH="$(dirname $(readlink -f $0))/.."
    else
        # else use the standard install location
        VSCODE_PATH="/usr/share/code"
    fi
fi

ELECTRON="$VSCODE_PATH/code"
CLI="$VSCODE_PATH/resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"
exit $?

Debug output (from different directories)

~$ bash -x code
++ id -u
+ '[' 1000 = 0 ']'
+ '[' '!' -L code ']'
++ dirname code
+ VSCODE_PATH=./..
+ ELECTRON=./../code
+ CLI=./../resources/app/out/cli.js
+ ELECTRON_RUN_AS_NODE=1
+ ./../code ./../resources/app/out/cli.js
/usr/bin/code: line 35: ./../code: No such file or directory
+ exit 127

/usr/bin$ bash -x code
++ id -u
+ '[' 1000 = 0 ']'
+ '[' '!' -L code ']'
+ which readlink
+++ readlink -f code
++ dirname /usr/share/code/bin/code
+ VSCODE_PATH=/usr/share/code/bin/..
+ ELECTRON=/usr/share/code/bin/../code
+ CLI=/usr/share/code/bin/../resources/app/out/cli.js
+ ELECTRON_RUN_AS_NODE=1
+ /usr/share/code/bin/../code /usr/share/code/bin/../resources/app/out/cli.js
+ exit 0

Contents of PATH

~$ $PATH
bash: /home/adam/anaconda3/bin:/home/adam/anaconda3/bin:/home/adam/bin:/home/adam/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: No such file or directory

Any help or suggestions are appreciated.

2

9 Answers

I had the same problem described here, new install of Ubuntu 18.04 LTS. I installed VS Code from conda.

Discovered that if you run the following

code --verbose

It will tell you what is going on with Code. In my case

code --verbose
[main 20:19:26] Startup error: 
Error: EACCES: permission denied, mkdir '/home/<user>/.config/Code/CachedData'

sure enough the folder ~/.config/Code had root access permissions for some reason. Deleted the folder using sudo.

rm -rf /home/<user>/.config/Code 

Tried again to run code and it working fine.

3

I had the same problem. Like Robin G and Nezir suggested I realized that the owner of the /home/user/.config/Code driectory is the "root". However, You could just change the ownership of that directory instead of removing it.

sudo chown -R user /home/user/.config/Code

"-R" option is needed to recursively change the ownership of all the files and directories under the target directory.

After this the Visual Studio Code v. 1.27 on ubuntu 18.04 works as it is supposed to on my machine.

1

Debug the bash with the correct command

To debug you should use following command:

bash --debugger `which code`

This will run the bash script line per line. To go to the next line simply type n and return. Post the output than we will see more.

Installing via snap (for Ubuntu versions > 18.04)

BTW Ubuntu 18.04 LTS (Long term release) now supports code directly and you can install it via snap package:

Show version and info of ubuntu supported snap:

snap info code

and to install it

sudo snap install code 

I personal prefer to install it via apt. Therefore follow this instruction from microsoft:

Marcus Vance

Marcus Vance

Cybersecurity & Digital Privacy Researcher

Marcus Vance is a cybersecurity auditor and technology writer dedicated to educating the public about online safety, data privacy regulations, enterprise security, and emerging cyber threats.