As I suspected. When Julia is asking for a
executable path … don’t put an
export statement there. That’s obviously not a path. A path in Linux is in the form
export is a linux command, nothing to do with VScode or Julia.
In Linux when you type in
julia or any other command/executable, Linux needs to know where this executable exists on the file directory. It traverses through a variable called
$PATH which contains a list of common directories that include binaries/executables. The default folders it searches are often
/usr/bin. In fact you can see all the folder it searches by running
affan@XPS13:/mnt/c/Users/affan$ echo $PATH
/home/affan/anaconda3/bin:/home/affan/anaconda3/condabin:/home/affan/.rbenv/plugins/ruby-build/bin:/home/affan/.rbenv/shims:/home/affan/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0:/mnt/c/WINDOWS/System32/OpenSSH:/mnt/c/Program Files (x86)/WinSCP:/mnt/c/Program Files/dotnet:/mnt/c/Users/affan/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/affan/AppData/Local/Programs/MiKTeX 2.9/miktex/bin/x64:/mnt/c/Users/affan/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Users/affan/perl/perl/bin:/mnt/c/Users/affan/AppData/Local/Julia-1.3.0/bin:/snap/bin
So when you type in
julia no matter where you are in the file system, Linux needs to know where the binary actually is. We accomplish this by using the command
export, which essentially defines a variable in bash. So in your terminal (assuming you have bash), you can run
$PATH at the end, which essentially takes the old
$PATH and appends your julia folder on top. If you just run
export PATH="/home/affan/path/to/julia/bin" without the
$PATH append, you are going to severely break your system. If you do this successfully, you should be able to just type in
julia in your terminal and it should just launch (and infact sets the
pwd to that directory, which is handy).
From a VSCode point of view, now you don’t really need to do anything. The VScode extension automatically uses
$PATH to find the julia binary, so you can leave it blank. Ofcourse, if you don’t do the above and do not modify your
$PATH variable, then you’ll need to explicitly tell the vscode extension where julia is. I would highly recommend just setting the path once and for all.
We are not done yet. By typing in
export PATH="/home/affan/path/to/julia/bin:$PATH" in your terminal, you are only changing the variable for that particular instance and will lose the modified variable the next time you login to your terminal/restart your computer. So we need a way to automatically run this command whenever you login/start your computer. Enter the file
.bashrc in your home directory which is a special file that is run automatically everytime you open terminal/bash. You can edit this file and copy/paste the command
export PATH="/home/affan/path/to/julia/bin:$PATH" so that you don’t have to keep doing it anymore.
If you are using zsh or some other shell, you have to put the export statement in the correct start-up file, instead of
.bashrc. However, I don’t think you need to worry about this.
Other ways to accomplish similar things is not modifying your
$PATH but creating a symlink in
/usr/local/bin (which is already in
$PATH by default). As far as I am aware, this is the canonical location for user downloaded binaries, but this might be a little too advanced for now. Just stick with setting the path correctly.