Fixing “command ‘python’ not found” error in ubuntu linux

PATH Configured At System-Wide Level

When I see the value of the PATH variable on my system, here’s what I get:

There’s something that doesn’t make sense to me…

…in the .bashrc file in the home directory on my user I only see:

So, where do the following directories come from considering that they are not in my user’s .bashrc file?

They must be defined somewhere at system level and not just at user level.

In Linux, system-wide configuration files are located under the /etc directory. For example in /etc/bashrc.

Let’s find out where this initial value for the PATH comes from using a recursive grep as root under the /etc directory.

The only result is in the configuration file for the SSH deamon. According to a comment in this file, the daemon is compiled with the PATH set to the value I’m seeing on my system.

That’s where the value of the PATH comes from!

Как исправить apt get команда не найдена?

Поскольку вторая причина предполагает меньше действий, нам нужно сначала проверить ее. Обычно исполняемые файлы apt находятся в каталоге /usr/bin. Сначала посмотрим есть ли такой файл в той папке:

Если файл есть, то вы увидите что-то похожее как на снимке выше. Также обратите внимания на права. Для пользователя, группы и остальных должен быть выставлен флаг «x» означающий исполнение. Если же его нет, то apt придется переустановить. Если права отличаются от приведенных выше, а именно «-rwxr-xr-x», то их тоже нужно исправить, добавим для всех категорий флаг исполняемости:

Если предыдущие варианты не сработали проверим содержимое переменной среды PATH:

Вы должны увидеть в ней ссылку на /usr/bin. Если такой строчки нет, то проблема была здесь, а строчку нужно добавить в конец:

Например:

Если вы вносили изменения в файл /etc/profile, и переменная PATH сломалась из-за этого, то нужно внести исправления и в этот файл.

Для Ubuntu Xenial:

Для Ubuntu Yakkety:

Теперь осталось установить загруженный пакет:

Готово, после этого ошибка apt get command not found должна исчезнуть и вы сможете нормально работать со своими пакетами.

Проблемы в программах

Если ни с того ни с сего закрывается или не так, как требуется работает, какая-нибудь графическая программа, решение проблем linux начинается из запуска ее через терминал. Для этого просто введите исполняемый файл программы и нажмите Enter. Обычно достаточно начать вводить имя программы с маленькой буквы и использовать автодополнение для завершения ввода названия.

В терминале программа, скорее всего, покажет почему она не работает. Также у многих программ поддерживается опция -v или —verbose. Вы можете попробовать использовать эту опцию, если первый запуск в терминале ничего не дал. Далее, когда уже есть сообщение об ошибке, вы можете попытаться исправить его сами, если поняли в чем дело или попытаться найти решение на формуме, скорее всего, другие пользователи уже решили вашу проблему. Но если нет, вы можете создать новую тему и описать там свою ошибку. Но без вывода программы в терминале вам вряд ли помогут.

Многие ошибки системы linux, связанные с графической оболочкой вы можете найти в файле ~/.xsession-errors в вашей домашней директории. Если оболочка работает медленно, зависает или не работают другие программы, но в других логах причин этому нет, возможно, ответ находится именно в этом файле.

Также ошибки linux могут возникать не только в обычных программах но и в работающих в фоне сервисах.  Но их тоже можно решить, чтобы посмотреть сообщения, генерируемые сервисом, запущенным с помощью systemd, просто наберите команду просмотра состояния сервиса:

$ sudo systemctl status имя_сервиса

Дальше вы знаете, что делать с этой ошибкой, главное что у вас есть зацепка, а дальше все можно решить, ну или почти все.

Здесь, как и всегда большинство ошибок связано с тем, что что-то не установлено, какого-то файла нет или к чему-то невозможно получить доступ, тогда решение проблем linux не вызовет много забот.

Что значит apt get команда не найдена?

Фактически это сообщение об ошибке означает как раз то, что оно нам сообщает, команда, которую вы пытаетесь выполнить не найдена в системе. Она либо еще не была установлена, либо была удалена. Но все это звучит очень странно в отношении к менеджеру пакетов. Рассмотрим основные причины возникновения ошибки:

  • Одна из самых очевидных причин, получения ошибки «apt get не найдена» в том, что у вас не Ubuntu. Этот пакетный менеджер используется только в дистрибутивах Linux, основанных на Debian. Системы Red Hat, CentOS, Fedora, OpenSUSE, CoreOS, Cloud Linux, ArchLlinux и другие таковыми не являются. Они имеют собственный пакетный менеджер, у каждой свой и именно его нужно использовать для установки пакетов, а не искать apt.
  • Если вы используете команду apt, а не apt-get, то, возможно, у вас старый дистрибутив, который не поддерживает такого синтаксиса, используйте apt-get;
  • Вторая причина в том что вы случайно или намерено удалили пакет Apt. Его больше нет в системе поэтому система и не может его найти;
  • Третья причина, может быть в невозможности обнаружения программы. Утилита apt есть в системе и исправно работает, но вы повредили переменную среды PATH и теперь система не ищет исполняемые файлы в той папке где находится apt.

Теперь рассмотрим как решить проблему. Это очень просто.

if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-linuxpip_org-box-4-0’)};Check your Linux distribution

At any moment, there are around a thousand Linux distribution (or Linux distro) exist. They can be configured and optimized for various devices (desktops, laptops, servers, tablets, etc). They can be packaged in a way that suit a community. They can even be developed exclusively to use on an online service (Amazon Linux AMI).

A handful of Linux distro is matured enough to be considered a major distribution. Almost all others will base their release on one of the «major», which have their own preference of standard packages (package manager like apt included).

The bewildering choice and the ever increasing number of Linux distributions can be confusing for those who are new to Linux, so here is a list of the most popular distribution and their package manager of choice.

Major distribution Package management system Package manager
Red Hat Linux RPM-based yum/dnf
Fedora RPM-based yum/dnf
CentOS RPM-based yum/dnf
Amazon Linux RPM-based yum/dnf
openSUSE RPM-based zypper (CLI)/YaST (GUI)
Debian DEB-based apt/apt-get
Ubuntu DEB-based apt/apt-get
Kali Linux DEB-based apt/apt-get
Arch Linux Pacman-based pacman
Gentoo Portage-based portage (emerge)
Slackware SlackPKG pkgtool/slackpkg

As you can see from the table, only Debian and Ubuntu based distribution use apt by default.

You can check whether your distribution include apt under the hood or not by typing the command or use one of a few other method.

If you’re copying terminal commands from a guide, we suggest you find another which suitable with the Linux distribution you are using. Or better yet, you can use AppImage, a new packaging format which allows applications to run as portable executable files.

«apt-get : command not found» is a common issue for AWS users who are using Amazon Linux images in their servers. You should keep in mind that Amazon Linux is based on CentOS at first, then diverged but it keeps yum as the preferred package manager. So instead of following guides for Ubuntu/Debian with its apt, look for tutorials that was made for Fedora or CentOS.

9 ответов

Лучший ответ

Проблема в том, что отсутствует в вашем , если он установлен локально.

Вам следует изменить свой , чтобы включить полный путь к .

Строка, которую нужно изменить, вероятно, равна .

Вы должны изменить его на и добавить к своим аргументам следующее: (в Windows).

Это проинструктирует VSCode:

  1. Запустите NodeJS (он должен быть установлен глобально).
  2. Передайте локальную установку Typescript в качестве сценария для запуска.

(это почти то, что делает исполняемый файл )

Вы уверены, что не хотите устанавливать Typescript глобально? Это должно упростить задачу, особенно если вы только начинаете его использовать.

42

zlumer
13 Фев 2016 в 09:59

Я тоже столкнулся с той же проблемой. Используйте командную строку nodeJS вместо командной строки Windows.

Шаг 1. Выполните

Шаг 2:

Новый файл будет иметь то же имя и другое расширение, что и « .js ».

Шаг 3:

Вы можете увидеть результат на экране. Меня устраивает.

Srinivasan.S
31 Июл 2018 в 20:15

Вам нужно запустить:

… вместо того, чтобы просто вызывать , как команда Windows, как, кажется, предлагают все остальные.

Если у вас не установлен , вам следует это сделать. Он должен быть установлен глобально (в отличие от Typescript). Итак, сначала запустите:

..затем запустите .

6

MSOACC
26 Авг 2020 в 11:24

В файле VSCode попытается найти командный сценарий tsc windows в некоторой папке, которую он считает папкой ваших модулей.

Если вы знаете, куда сохраняется команда или , я бы рекомендовал заменить:

С участием

Где — это папка, содержащая мой исполняемый файл tsc windows

Определит, где мой vscode изначально указывает прямо сейчас, чтобы найти tsc и исправить его, я думаю.

8

Danh
16 Ноя 2016 в 02:03

Для окон

После установки машинописи глобально

Просто выполните поиск по запросу «командная строка node.js»

Введите командную строку

Здесь мы видим, что команда tsc работает, теперь перейдите в свою папку и введите

Он соответствует ts файлу js.

10

Ashutosh Jha
7 Июн 2019 в 07:11

В качестве альтернативы вы можете использовать npm, который автоматически просматривает папку .bin. Тогда вы можете использовать tsc

-1

Dirk Bäumer
18 Фев 2016 в 16:19

Для меня, запустив Visual Studio Code от имени администратора, проблема решена.

hoanvd1210
12 Май 2020 в 09:31

Может быть причина, по которой не установлен глобально, поэтому установите его

Если вы хотите преобразовать файлы в , сделайте это в соответствии с вашими потребностями

57

WasiF
19 Май 2019 в 05:25

Вы пропустили установку машинописного текста, просто выполните команду ниже и попробуйте tsc —init

2

Nicholas K
8 Дек 2018 в 06:43

What are Python and pip?

Python is a simple, Object-oriented, interpreted, high-level programming language with dynamic semantics. Due to its non-complicated syntax and fast edit-test-debug cycle, the Programmer community loves it. Python also reduces the cost of software management due to its simple nature. Python2 and Python3 are the two versions available, while Python2 is already obsolete and it’s suggested to move your codebase to Python3.

Pip is a package manager for python, it allows you to install and manage additional libraries and dependencies that are not distributed or part of the standard library.

*** For Windows10 and macOS, pip gets installed automatically with python3 as an option is available during installation. But in the case of Linux, you need to install pip3 after python3 installation separately.

How Do I fix the Bash error “command not found”?

So far we have seen what the PATH is…

…but how does it help us fix the command not found error?

First of all, before looking at how the command not found error could be related to the PATH, let’s look at a simple cause.

Before doing any other checks make sure you are not misspelling the command when you execute it.

This might be happening mostly to those who are new to Linux and are learning the commands.

If the way you have typed the command is correct, then keep going…

The next reason could be that the directory where the command is located is not in the PATH and there could be two reasons for that:

  1. The command is available on the system but its directory is not in the PATH.
  2. The command is not available on the system at all.

Scenario 1 can occur if you download a specific tool on your Linux system and you don’t add the directory in which the binary is located to the PATH environment variable.

To update the value of the PATH you have to modify the .bashrc file.

Let’s say the current value of the PATH is:

And I want to add the directory /opt/install to it because that’s where the command I want to execute is located. That line would become:

The order of the directories in the PATH is important, the first directory has higher priority than the second directory, and so on.

So, if you want the /opt/install directory to be the first one to be searched when a command is executed the PATH definition becomes:

Notice the dollar $ in front of PATH. This is REALLY important because it refers to the existing value of the variable PATH.

Omitting the $ sign in this line could have catastrophic effects on your system. That’s because the shell wouldn’t know anymore where to find basic commands like ls, cd, vim, etc…

In the next section we will look at the scenario 2, where the command is not available on your Linux system.

Решение проблем Linux

Linux очень сильно отличается от WIndows, это заметно также при возникновении проблем Linux. Вот допустим, произошла ошибка в программе Windows, она полностью закрывается или выдает непонятное число с кодом ошибки и все, вы можете только догадываться или использовать поиск Google, чтобы понять что произошло. Но в Linux все совсем по-другому. Здесь каждая программа создает лог файлы, в которых мы можем при достаточном знании английского или даже без него, выяснить, что произошло. Более того, если программу запускать из терминала, то все ошибки linux и предупреждения мы увидим прямо в окне терминала. и сразу можно понять что нужно делать.

Причем вы сможете понять что произошло, даже не зная английского. Главным признаком ошибки есть слово ERROR (ошибка) или WARNING (предупреждение). Рассмотрим самые частые сообщения об ошибках:

  • Permission Denied — нет доступа, означает что у программы нет полномочий доступа к определенному файлу или ресурсу.
  • File or Directory does not exist — файл или каталог не существует
  • No such file or Directory — нет такого файла или каталога
  • Not Found — Не найдено, файл или ресурс не обнаружен
  • Connection Refused — соединение сброшено, значит, что сервис к которому мы должны подключиться не запущен
  • is empty — означает, что папка или нужный файл пуст
  • Syntax Error — ошибка синтаксиса, обычно значит, что в конфигурационном файле или введенной команде допущена ошибка.
  • Fail to load — ошибка загрузки, означает что система не может загрузить определенный ресурс, модуль или библиотеку (fail to load library) обычно также система сообщает почему она не может загрузить, permission denied или no such file и т д.

Сообщения об ошибках, кроме терминала, мы можем найти в различных лог файлах, все они находятся в папке /var/log, мы рассматривали за какие программы отвечают определенные файлы в статье просмотр логов linux. Теперь же мы подробнее рассмотрим где и что искать если linux выдает ошибку.

Проблемы с драйверами и ядром

Проблемы с драйверами, модулями ядра или прошивками могут вызвать много неприятностей во время загрузки системы. Это может быть просто медленная загрузка системы, неработоспособность определенных устройств  неправильная работа видео или полная невозможность запустить графическую подсистему. Исправление ошибок Linux начинается с просмотра логов.

Вы можете посмотреть все сообщения ядра с момента начала загрузки, выполнив команду чтобы узнать какую linux выдает ошибку:

Чтобы иметь возможность удобно листать вывод можно выполнить:

Или сразу выбрать все ошибки:

Дальше будет очень просто понять какого драйвера не хватает, что система не может загрузить или что нужно установить. Если возникает ошибка ввода-вывода linux, то, скорее всего, драйвер несовместим с вашим устройством, в таком случае, может помочь обновление ядра, чтобы получить самую новую версию драйвера. В некоторых случаях ядро может само предложить вариант решения проблемы прямо в сообщении об ошибке вплоть до того какую команду выполнить или какой файл скачать. Если же нет, вы все еще можете воспользоваться поиском для решения своей проблемы linux.

How Do I fix the Bash error “command not found”?

So far we have seen what the PATH is…

…but how does it help us fix the command not found error?

First of all, before looking at how the command not found error could be related to the PATH, let’s look at a simple cause.

Before doing any other checks make sure you are not misspelling the command when you execute it.

This might be happening mostly to those who are new to Linux and are learning the commands.

If the way you have typed the command is correct, then keep going…

The next reason could be that the directory where the command is located is not in the PATH and there could be two reasons for that:

  1. The command is available on the system but its directory is not in the PATH.
  2. The command is not available on the system at all.

Scenario 1 can occur if you download a specific tool on your Linux system and you don’t add the directory in which the binary is located to the PATH environment variable.

To update the value of the PATH you have to modify the .bashrc file.

Let’s say the current value of the PATH is:

And I want to add the directory /opt/install to it because that’s where the command I want to execute is located. That line would become:

The order of the directories in the PATH is important, the first directory has higher priority than the second directory, and so on.

So, if you want the /opt/install directory to be the first one to be searched when a command is executed the PATH definition becomes:

Notice the dollar $ in front of PATH. This is REALLY important because it refers to the existing value of the variable PATH.

Omitting the $ sign in this line could have catastrophic effects on your system. That’s because the shell wouldn’t know anymore where to find basic commands like ls, cd, vim, etc…

In the next section we will look at the scenario 2, where the command is not available on your Linux system.

1. Check if Python is installed.

Most of the time this error occurs at a shell prompt or command line because python is not installed or is corrupted. Let’s first check if Python is installed.

Run the following commands to find your installed Python location.

                      $ which python3
                    

or

                      $ type -a python3
                    

Output:

                      python3 is/usr/bin/python3
python3 is/bin/python3
                    

or

                      $ ls -l/usr/bin/python
$ ls -l/usr/local/bin
                    

Run the command to check your Python version:

                      $ python3 --version
                    

Simple python3 run command:

                      $ python3
Python 3.8.2 (default, Jul 16 2020, 14:00:26)
 on linux
Type "help", "copyright", "credits" or "license" for more information.
                    

If you don’t find python installed, I’ll show you how to install python in the next section.

Install Python on Ubuntu / Debian

Debian , Ubuntu and their derivatives come with python preinstalled. If it is damaged or not installed then use the following command.

To install python 2, enter:

                      $ sudo apt install python
                    
                      After January 1, 2020 Python 2 no longer receives any updates, and recommend not using it.
                    

or

To install python 3, enter:

                      $ sudo apt install python3
                    

Python is installed from source, by default it is installed to http: // usr / local / bin /. In this case, typing python in the console will not execute the one inside / usr / local / bin /, but the one inside / usr / bin /.

If you want to execute the one inside / usr / local / bin /, you can easily configure the system using an alias. The alias should be placed in the .bashrc file as shown below.

                      alias python=/usr/local/bin/python3.9
                    

Thanks to the dnf package manager, you can easily install python on Fedora:

                      $ sudo dnf установить python38
                    

To install Python on RHEL, Oracle Linux and CentOS , use the yum command as follows:

                      $ sudo yum установить python
                    

apt-get command not found on macOS

macOS, by default, doesn’t use APT package manager. In fact, the OS doesn’t have a default package manager at all. However, there is a hugely popular APT alternative for macOS called Homebrew.

Below is how you can install Homebrew on macOS.

First, press the Command + Space key combination to open the Spotlight. Type in «terminal» without the double quotes and hit Enter.

Then, you have to install XCode by running the following command :

Once XCode is successfully installed, you can install Homebrew by running the following one-line command

Please do note that some of the guides you found online may use ruby instead of /bin/bash. Previously, Homebrew installer relies on Ruby as a prerequisites, but now it’s been rewritten from scratch and use the built-in bash shell included in macOS. On modern macOS versions, you may encounter «The default interactive shell is now zsh» message, we have a guide on how to fix it that you may want to check out.

Now wait for the installation to finish. You may be prompted for your password during the process.

Sometimes, the Homebrew installer stuck up somewhere and left a corrupted installation. In that case, you may want to read our guide on possible fixes for «brew: command not found».

The command to install a package with Homebrew is similar to its APT counterpart.

Step 2: Checking the PATH Variable

If Python is installed in your system, but it is not found when executing Python commands, probably your problem is the PATH environment variable.

You must check if the path /usr/local/bin is included in the PATH variable.

To check the PATH environment variable, run the following command.

echo $PATH

As you can see, the previous command returns paths separated by a colon. Make sure the path /usr/bin is included. If not, then execute the command shown in the figure below.

export PATH=$PATH:/usr/bin

If the previous command helped and Python works, your problem was in the PATH variable. But the previously executed command is not persistent, and the path will be included only in the current session.

To solve the problem permanently, add the path to the .bashrc file under your home directory.

Open it using any text editor you want; in my case, I use nano, as shown below.

nano .bashrc

At the end of the file, add the line shown below.

export PATH=»$PATH:/usr/bin»

Close the .bashrc file saving settings and update the path variable by running the following command.

source .bashrc

If the PATH variable did not fix the problem, you are probably dealing with a symbolic link issue.

Проблемы с командами в терминале

Обычно проблемы с командами в терминале возникают не из-за ошибки linux или потому, что разработчики что-то недоработали, а потому, что вы ввели что-то неправильно или предали не те что нужно опции.

Если были переданы не те опции, то, скорее всего, программа покажет вам справку, ознакомившись с которой вы сможете очень быстро понять в чем проблема. Также справку выдают множество команд если их запустить без параметров.

Также довольно частой ошибкой при выполнении команд есть неиспользование команды sudo перед самой командой для предоставления ей прав суперпользователя. В таких случаях вы обычно получаете ошибку Permission Denied или просто уведомление, что не удалось открыть тот или иной файл или ресурс: can not open …, can not read … и так далее.

Если файла, которого вы передали в параметрах не существует, то вам будет об этом сказано соответствующим сообщением. Сообщения могут быть и более специфичные, в зависимости от ошибки, но в конце концов, вы можете воспользоваться переводчиком Google, чтобы понять смысл того, что хочет система.

Очень распространенной среди новичков ошибкой, есть no such file or directory при попытке выполнить файл, скачанный из интернета. Сразу кажется что это бред, ведь файл существует, но на самом деле оболочка ищет только файлы с флагом исполняемый, а поэтому пока вы не установите этот флаг для файла, он для оболочки существовать не будет.

Conclusion

As you can see, this common error has 3 main possible reasons. Installing Python, defining the correct path, or fixing symbolic links are solutions any Linux user can apply independently of the knowledge level. In some cases, if the error persists, try purging all Python-related packages and installing them back. In most cases, if not all, all the solutions provided in this article should fix the issue. The steps are valid for almost every Linux distribution. While some steps (Like installation) focus on Debian/Ubuntu, CentOS and Fedora, installing the same packages using your distribution packages manager is equivalent. I hope this content was useful for you to get Python working.

Thank you for reading this tutorial explaining how to fix the error “Python command not found” in Linux. Keep following us for more professional articles.

The PATH Environment Variable

Linux system are configured with a pre-defined set of environment variables required by the operating system to function properly.

The PATH environment variable is one of the most important environment variables in a Linux system. It contains a list of directories used by Linux to search for commands that can be executed without specifying their full path.

You can use the echo command to see the value of the PATH variable:

In the list of directories inside the PATH you can see the home directory for my current user (ec2-user) but also directories like /usr/bin.

Let’s have a look at some of the commands present in the /usr/bin directory. To restrict the list of commands returned by ls, I just look for commands starting with ch (I use the ch* wildcard to do that):

Let’s take the chmod command as an example.

If I use the which command to check the full path of the chmod command I get the following:

As you can see this is exactly the same directory in the PATH, /usr/bin.

The fact that /usr/bin/ is in the PATH allows us to execute the chmod command withouth having to specify its full path.

Makes sense?

Step 3: Fixing Python soft/symbolic Links

In some cases, the error cause may be a wrong or absent symbolic or soft link.

The package python-is-python3 creates a symbolic link between Python and Python3 for Python3 to be executed when the user runs Python. After installing this package, running the command python will execute python3.

The first content of this section shows how to resolve this problem on Debian and Ubuntu Linux distributions by installing the mentioned package. explains how to manually add the symbolic link, valid for almost every Linux distribution.

To install the python-is-python3 package on Debian or Ubuntu Linux distributions, run the following command.

sudo apt install python-is-python3

Once installed, check if the soft link was properly defined by running the command shown in the following figure.

ls -l /usr/bin/python

To see Python-related symbolic links, run the command described below.

ls -l /usr/bin/python*

Once you know the Python exact version, the syntax to add a soft link is the following:

sudo ln -fs /usr/bin/python<Version> /usr/bin/python

For example, if the Python 3 version is 3.9, I would run:

sudo ln -fs /usr/bin/python3.9 /usr/bin/python

The PATH Environment Variable

Linux system are configured with a pre-defined set of environment variables required by the operating system to function properly.

The PATH environment variable is one of the most important environment variables in a Linux system. It contains a list of directories used by Linux to search for commands that can be executed without specifying their full path.

You can use the echo command to see the value of the PATH variable:

In the list of directories inside the PATH you can see the home directory for my current user (ec2-user) but also directories like /usr/bin.

Let’s have a look at some of the commands present in the /usr/bin directory. To restrict the list of commands returned by ls, I just look for commands starting with ch (I use the ch* wildcard to do that):

Let’s take the chmod command as an example.

If I use the which command to check the full path of the chmod command I get the following:

As you can see this is exactly the same directory in the PATH, /usr/bin.

The fact that /usr/bin/ is in the PATH allows us to execute the chmod command withouth having to specify its full path.

Makes sense?

Step 1: Make Sure Python is Installed and How to Install it

The first step to diagnosing this error is to check if Python is properly installed in your system.

One of the ways to check this is by printing all Python directories under /usr/bin using a wildcard, as shown below.

ls /usr/bin/python*

Another way is by executing the command, as shown in the following screenshot.

which python python2 python3

In case the output does not show the Python version you need, on Debian/Ubuntu based systems, run the following command to update repositories prior to installation ().

sudo apt update

To install Python 3, run the command shown in the figure below.

sudo apt install python3 -y

Only if you are looking for Python previous version (Python 2), run the following command.

sudo apt install python2 -y

To install Python3 on CentOS, run:

sudo yum update

And then execute:

sudo dnf install python3

For Python2 on CentOS, execute:

sudo yum install python2

To install Python3 on Fedora, execute the following:

sudo dnf install python3

For Python2 run:

sudo dnf install -y python2

After installing Python, check if the command not found error persists. If it keeps showing up, try the steps described below.

PATH Configured At System-Wide Level

When I see the value of the PATH variable on my system, here’s what I get:

There’s something that doesn’t make sense to me…

…in the .bashrc file in the home directory on my user I only see:

So, where do the following directories come from considering that they are not in my user’s .bashrc file?

They must be defined somewhere at system level and not just at user level.

In Linux, system-wide configuration files are located under the /etc directory. For example in /etc/bashrc.

Let’s find out where this initial value for the PATH comes from using a recursive grep as root under the /etc directory.

The only result is in the configuration file for the SSH deamon. According to a comment in this file, the daemon is compiled with the PATH set to the value I’m seeing on my system.

That’s where the value of the PATH comes from!

Where Is PATH Defined in Linux?

Wondering where is the PATH environment variable defined?

Let’s find out…

It’s usually defined somewhere in your home directory, and specifically in one of the hidden files used in Linux to configure your user environment: the .bashrc file.

In Linux, the dot before the name of a file means that the file is hidden. It’s not visible if we execute the ls command without flags. It’s only visible if you pass the -a flag to the ls command.

The .bashrc file is actually a shell script that gets executed when Linux initialises an interactive shell. This allows you to configure your environment the way you want every time you open your shell.

If I look at the .bashrc file on my system I see the following lines:

As you can see the PATH variable is defined and it’s then made available to any child processes of this shell using the export command.

If you want to add another directory to the PATH you can simply update the .bashrc file.

This is a common requirement if you download external tools that are not part of the Linux operating system and you want to be able to execute them from your shell without having to specify their full path.

One common scenario is adding Java to the Linux PATH after downloading the JDK (Java Development Kit) on your system.

Взаимодействие окружения Windows и окружения подсистемы Linux

Одной из проблем для виртуальных машин является необходимость хорошего взаимодействия между хостом и самой виртуальной машиной. Это нужно для быстрой переброски файлов, ссылок и прочего. И в этом разделе мы обсудим как раз эту тему.

Для начала поговорим о том, где находится файловая система нашей WSL. Ее можно найти по адресу . При этом не рекомендуется писать туда файлы, поскольку в Windows используется довольно капризная NTFS, а в Linux — ext3/ext4. Можно ненароком «поломать» что-нибудь. А вот читать можно спокойно.

Возможно, это проблема со временем уйдет в прошлое, когда в ядре Linux появится-таки NTFS-драйвер от Paragon, который не так давно стал открытым. Ожидается, что это произойдет в версии 5.15.

Если нужно получить доступ к диску Windows, то он будет смонтирован в в соответствии со своими буквами. То есть, системный диск (если у вас Windows на диске C) примонтируется как , условная флешка — как (кто еще помнит, что по умолчанию она получала именно букву F?), а диск с любимыми фильмами и музыкой — (или какая там у вас буква?).

При этом можно делать симлинки, а права автоматом ставятся на максимум. То есть права по дефолту будут обозначены как , а владельцем считается (и снова повторим, что с учетом этих особенностей нужно быть осторожным).

При этом виндовые папки будут видны в терминале, файлы — будут открываться, а программы — запускаться.

Пример:

— смотрим папку

— содержимое файла txt

— читаем данные.

— смотрим содержимое папки с установленными программами (как видим, доступ закрыт, хотя просмотреть можно)

winitpro.ru

Если запускать приложения Windows прямиком из Linux, это можно сделать командами:

  1. — «Проводник»
  2. — «Калькулятор»
  3. — штатный «Блокнот»
  4. — WordPad
  5. — Paint,
  6. — календарь

А вот погоду можно посмотреть иначе — .

Для удобства можно установить mc — Midnight Commander, который будет работать в оболочке Bash в Linux и в командной строке Windows.

Команда проста:

А вот так выглядит двухпанельный файловый менеджер, где с одной стороны Windows, с другой — Linux. Похоже, старая шутка про два диска обретает новый смысл.

winitpro.ru

Если же необходимо запускать Linux приложения напрямую из Windows, то для этого есть три волшебные команды — , и . По умолчанию они идут от рута, потому лучше использовать и снизить привилегии.

Для приложений с X-сервером нужно еще передавать переменную окружения . А папку, в которой работает то или иное приложение, надо выбирать уже внутри WSL через . Например, .

Как мы говорили ранее, в первой версии WSL может просматривать перечень процессов Linux в «Диспетчер задач» Windows. А вот в самой подсистеме видны только Linux-процессы.

Зато команды в Linux и в Windows дают одинаковые данные, а веб-сервер, запущенный в Linux, окажется доступным и в Windows. Наоборот — то же самое.

Особенности и ограничения WSL и WSL 2

Не секрет, что NT-системы и Linux-системы отличаются во многом. И потому первая версия WSL, созданная Microsoft, была, по сути, попыткой реализации всех интерфейсов ядра Linux в рамках NT. Если проще — все интерфейсы, которые существуют в обеих системах, должны были реализовываться один к одному (да-да, ошибки, баги и прочее — тоже).

Если же в Linux интерфейс был, а в NT его не было, то его и не надо было реализовывать напрямую. А если надо — то с помощью «костылей». Само собой, такой подход сделал первую WSL медленной, хотя и реализовывал многие особенности, например, те же Linux-процессы в «Диспетчере задач».

Также WSL приходилось иметь дело с файловой системой NTFS, которая под Linux пока что работает не очень. Из-за этого падала скорость работы в целом. Однако преимущества такого подхода тоже очевидны — полная открытость и контроль. Ядро NT «знает» о ядре Linux и может отслеживать процессы.

Но маркетинг победил, когда выпустили WSL 2. Это уже полноценная виртуальная машина, которая «вшита» в Windows. Настоящий гибрид. При этом Linux в этом случае был «черным ящиком» для NT, поскольку внутренняя логика никак не отслеживалась. Это позволило ускорить работу, но при этом уменьшило контроль со стороны пользователя.

Иначе говоря, если какой-то вирус попадет в WSL 2, то он может обойти защиту и хост-системы. Очевидно, что удаленно взломать такую гибридную систему можно также попытаться через WSL 2, где все по дефолту установлено с максимальными правами.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: