diff --git a/termux-shared/src/main/java/com/termux/shared/termux/shell/command/environment/TermuxAppShellEnvironment.java b/termux-shared/src/main/java/com/termux/shared/termux/shell/command/environment/TermuxAppShellEnvironment.java index 7f08f562..3fafd56e 100644 --- a/termux-shared/src/main/java/com/termux/shared/termux/shell/command/environment/TermuxAppShellEnvironment.java +++ b/termux-shared/src/main/java/com/termux/shared/termux/shell/command/environment/TermuxAppShellEnvironment.java @@ -77,7 +77,8 @@ public class TermuxAppShellEnvironment { public static final String ENV_TERMUX_APP__PACKAGE_VARIANT = TERMUX_APP_ENV_PREFIX + "PACKAGE_VARIANT"; /** Environment variable for the Termux app files directory. */ public static final String ENV_TERMUX_APP__DATA_DIR = TERMUX_APP_ENV_PREFIX + "DATA_DIR"; - + public static final String ENV_TERMUX_APP__LEGACY_DATA_DIR = TERMUX_APP_ENV_PREFIX + "LEGACY_DATA_DIR"; + public static final String ENV_TERMUX_APP__BUILD_DATA_DIR = TERMUX_APP_ENV_PREFIX + "BUILD_DATA_DIR"; /** Environment variable for the Termux app {@link TermuxAmSocketServer#getTermuxAppAMSocketServerEnabled(Context)}. */ public static final String ENV_TERMUX_APP__AM_SOCKET_SERVER_ENABLED = TERMUX_APP_ENV_PREFIX + "AM_SOCKET_SERVER_ENABLED"; @@ -143,6 +144,8 @@ public class TermuxAppShellEnvironment { */ ShellEnvironmentUtils.putToEnvIfSet(environment, ENV_TERMUX_APP__DATA_DIR, applicationInfo.dataDir); + ShellEnvironmentUtils.putToEnvIfSet(environment, ENV_TERMUX_APP__LEGACY_DATA_DIR, "/data/data/" + applicationInfo.packageName); + ShellEnvironmentUtils.putToEnvIfSet(environment, ENV_TERMUX_APP__BUILD_DATA_DIR, TermuxConstants.TERMUX_INTERNAL_PRIVATE_APP_DATA_DIR_PATH); ShellEnvironmentUtils.putToEnvIfSet(environment, ENV_TERMUX__SE_PROCESS_CONTEXT, SELinuxUtils.getContext()); ShellEnvironmentUtils.putToEnvIfSet(environment, ENV_TERMUX__SE_FILE_CONTEXT, SELinuxUtils.getFileContext(applicationInfo.dataDir)); diff --git a/termux-shared/src/main/java/com/termux/shared/termux/shell/command/environment/TermuxShellEnvironment.java b/termux-shared/src/main/java/com/termux/shared/termux/shell/command/environment/TermuxShellEnvironment.java index 5f3519c5..05c5fc8f 100644 --- a/termux-shared/src/main/java/com/termux/shared/termux/shell/command/environment/TermuxShellEnvironment.java +++ b/termux-shared/src/main/java/com/termux/shared/termux/shell/command/environment/TermuxShellEnvironment.java @@ -1,9 +1,12 @@ package com.termux.shared.termux.shell.command.environment; import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; import androidx.annotation.NonNull; +import com.termux.shared.android.PackageUtils; import com.termux.shared.errors.Error; import com.termux.shared.file.FileUtils; import com.termux.shared.logger.Logger; @@ -77,8 +80,19 @@ public class TermuxShellEnvironment extends AndroidShellEnvironment { environment.putAll(termuxApiAppEnvironment); */ + ApplicationInfo applicationInfo = PackageUtils.getApplicationInfoForPackage(currentPackageContext, TermuxConstants.TERMUX_PACKAGE_NAME); + if (applicationInfo != null && !applicationInfo.enabled) { + applicationInfo = null; + } + + if (applicationInfo != null) { + environment.put("TERMUX__APPS_DIR", applicationInfo.dataDir + "/termux/apps"); + } + environment.put("TERMUX__ROOTFS", TermuxConstants.TERMUX_FILES_DIR_PATH); environment.put(ENV_HOME, TermuxConstants.TERMUX_HOME_DIR_PATH); + environment.put("TERMUX__HOME", TermuxConstants.TERMUX_HOME_DIR_PATH); environment.put(ENV_PREFIX, TermuxConstants.TERMUX_PREFIX_DIR_PATH); + environment.put("TERMUX__PREFIX", TermuxConstants.TERMUX_PREFIX_DIR_PATH); // If failsafe is not enabled, then we keep default PATH and TMPDIR so that system binaries can be used if (!isFailSafe) {