|
1 | 1 | package com.termux.shared.shell;
|
2 | 2 |
|
3 | 3 | import android.content.Context;
|
| 4 | +import android.content.pm.ApplicationInfo; |
| 5 | +import android.os.Build; |
4 | 6 |
|
5 | 7 | import androidx.annotation.NonNull;
|
6 | 8 |
|
| 9 | +import com.termux.shared.android.SELinuxUtils; |
| 10 | +import com.termux.shared.data.DataUtils; |
7 | 11 | import com.termux.shared.models.errors.Error;
|
8 | 12 | import com.termux.shared.termux.TermuxConstants;
|
9 | 13 | import com.termux.shared.file.FileUtils;
|
@@ -57,10 +61,42 @@ public static String[] buildEnvironment(Context currentPackageContext, boolean i
|
57 | 61 | if (TERMUX_API_VERSION_NAME != null)
|
58 | 62 | environment.add("TERMUX_API_VERSION=" + TERMUX_API_VERSION_NAME);
|
59 | 63 |
|
| 64 | + |
| 65 | + |
60 | 66 | environment.add("TERM=xterm-256color");
|
61 | 67 | environment.add("COLORTERM=truecolor");
|
| 68 | + |
| 69 | + try { |
| 70 | + ApplicationInfo applicationInfo = currentPackageContext.getPackageManager().getApplicationInfo( |
| 71 | + TermuxConstants.TERMUX_PACKAGE_NAME, 0); |
| 72 | + if (applicationInfo != null && !applicationInfo.enabled) { |
| 73 | + applicationInfo = null; |
| 74 | + } |
| 75 | + |
| 76 | + if (applicationInfo != null) { |
| 77 | + environment.add("TERMUX_APP__DATA_DIR=" + applicationInfo.dataDir); |
| 78 | + environment.add("TERMUX_APP__LEGACY_DATA_DIR=" + "/data/data/" + applicationInfo.packageName); |
| 79 | + environment.add("TERMUX_APP__BUILD_DATA_DIR=" + TermuxConstants.TERMUX_INTERNAL_PRIVATE_APP_DATA_DIR_PATH); |
| 80 | + |
| 81 | + environment.add("TERMUX_APP__SE_FILE_CONTEXT=" + SELinuxUtils.getFileContext(applicationInfo.dataDir)); |
| 82 | + |
| 83 | + String seInfoUser = PackageUtils.getApplicationInfoSeInfoUserForPackage(applicationInfo); |
| 84 | + environment.add("TERMUX_APP__SE_INFO=" + PackageUtils.getApplicationInfoSeInfoForPackage(applicationInfo) + |
| 85 | + (DataUtils.isNullOrEmpty(seInfoUser) ? "" : seInfoUser)); |
| 86 | + } |
| 87 | + |
| 88 | + } catch (final Exception e) { |
| 89 | + // Ignore |
| 90 | + } |
| 91 | + |
| 92 | + environment.add("TERMUX__ROOTFS=" + TermuxConstants.TERMUX_FILES_DIR_PATH); |
62 | 93 | environment.add("HOME=" + TermuxConstants.TERMUX_HOME_DIR_PATH);
|
| 94 | + environment.add("TERMUX__HOME=" + TermuxConstants.TERMUX_HOME_DIR_PATH); |
63 | 95 | environment.add("PREFIX=" + TermuxConstants.TERMUX_PREFIX_DIR_PATH);
|
| 96 | + environment.add("TERMUX__PREFIX=" + TermuxConstants.TERMUX_PREFIX_DIR_PATH); |
| 97 | + |
| 98 | + environment.add("TERMUX__SE_PROCESS_CONTEXT=" + SELinuxUtils.getContext()); |
| 99 | + |
64 | 100 | environment.add("BOOTCLASSPATH=" + System.getenv("BOOTCLASSPATH"));
|
65 | 101 | environment.add("ANDROID_ROOT=" + System.getenv("ANDROID_ROOT"));
|
66 | 102 | environment.add("ANDROID_DATA=" + System.getenv("ANDROID_DATA"));
|
|
0 commit comments