Termux is a terminal emulator for Android devices and an application on Linux It works directly without the need for root access or special configuration.
In Termux additional packages are available through the APT package manager. The developer's main goal is to bring the Linux command line experience to mobile device users without too many headaches and Termux is enriched with a great set of utilities.
In Termux all included packages build with Android NDK and they only have compatibility fixes to make them work on Android.
The operating system does not provide full access to your file systems, so Termux cannot install package files in standard directories like / bin, / etc, / usr or / var. Instead, all files are installed in the application's private directory located in "/data/data/com.termux/files/usr".
For simplicity, this directory has been renamed "prefix" and is usually "$ PREFIX", which is also an environment variable exported to the Termux shell.
With that said, the developer cautions that this directory cannot be changed or moved to an SD card for two main reasons.
Firstly, the file system must support Unix permissions and special files as symbolic links or sockets and secondly, the path to the "prefix" directory is hard-coded in all binaries.
These are some of the main features and functionalities cited by the author of Termux:
- Safe: You can access remote servers using the OpenSSH ssh client. Termux combines standard packages with precise terminal emulation in an attractive open source solution.
- Integrated functions: you have the option of using Bash, fish or Zsh and nano, Emacs or Vim; enter SMS into your inbox, access API terminals with curl, and use rsync to store backup copies of your contact list on a remote server.
- Customizable: A large number of packages can be installed to the system with the help of the well-known APT package management from Debian and Ubuntu.
- Explorable: the packages available in Termux are the same as those for Mac and Linux. You can install the man pages on your phone and read them in one session while experimenting with them in another.
- Batteries included: Termux included updated versions of Perl, Python, Ruby, and Node.js.
- Scaled: you can connect a bluetooth keyboard and connect a device to an external display if necessary, Termux supports keyboard shortcuts and has full mouse support.
Apart from the file system, there are other differences with traditional Linux distributions, so Termux should not be confused with a distribution. In fact, although it provides a package ecosystem similar to Linux distributions, you should know that Termux is just a normal application that runs on Android.
- Everything is installed in $ PREFIX and not in standard directories like / bin or / etc.
- The environment is single-user, so be careful with this when running commands as root, as it can mess up SELinux (Security-Enhanced Linux) tags and permissions.
- Termux uses the same libc (standard C language library) and the same dynamic linker as the Android operating system.
According to the Termux website, these 3 main differences cause problems when trying to run programs that have been compiled for a typical GNU / Linux system.
Finally, Termux's GitHub page notes that the emulator does not currently target Android 10 (API 29) due to a number of changes made by this version of the operating system.
“Untrusted applications targeting Android 10 cannot invoke exec () on files located in the application's home directory. This execution of files from the application's home directory for writing is a violation of W ^ X. Applications should only load the binary code that is embedded in the application's APK file, ”Google reports on API 29.