快轉到主要內容

淺談Termux檔案管理,將Linux環境的檔案與Android共享

分類   智慧型手機 Termux教學
標籤   Termux
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

測試環境:

  • Android 14
  • Termux 0.119

Termux自身的根目錄
#

根據Termux Wiki,Termux並不符合FHS標準,跟一般電腦Linux發行版的目錄結構有差異。因此,如果你的軟體很依賴標準Linux目錄結構,那麼請考慮使用proot或chroot建立Linux容器環境較為保險。

Termux的檔案目錄(文件目錄)位於/data/data/com.termux/files/

這個目錄只有Termux可以存取。

Termux內提供二個環境變數:$TERMUX_PREFIX$PREFIX,它們指向的都是/data/data/com.termux/files/usr目錄。

Termux透過pkg安裝的軟體通常會放到/data/data/com.termux/files/usr/bin

Termux家目錄位於/data/data/com.termux/files/home

沒有Root權限的情況下,Termux無法存取Android系統的根目錄(/

Termux的家目錄
#

需要注意的是,Termux只有單一使用者帳號(用whoami指令確認),沒有root帳號。使用者也不能新增帳號。

Termux家目錄位於/data/data/com.termux/files/home 。執行指令的時候,家目錄路徑可以用~替代。

家目錄只有Termux能存取,其他APP得透過Android Scoped Storage 才能夠讀取該目錄,如果有Root權限更好。(參見: 用質感檔案存取Termux家目錄的做法

通常Termux家目錄下是沒有任何檔案的,不過用ls -a可以看到隱藏檔案

~ $ ls -a
.            .bash_history  .ssh
..           .npm           .termux  storage
.Xauthority  .npmrc         .vnc

那些點開頭的目錄大部分是軟體的設定檔,例如.termux就包含了程式行為和字體。

如果有安裝XFCE4桌面環境,Termux的家目錄便會自動生出符合XDG Base Directory標準的目錄。

如果要設定$PATH環境變數,請將其放到~/.bashrc或者~/.profile

若想要一款純文字的檔案管理軟體,你可以在Termux安裝ranger套件,方便管理Termux家目錄下的檔案。

Termux存取Android內部儲存空間
#

預設情況下Termux無法存取自身環境以外的Android使用者檔案。

在執行termux-setup-storage指令之後,Termux便能夠存取Android內部儲存空間的檔案。

準確來說,Termux會將Android的/sdcard路徑bind mount到Termux家目錄下的~/storage

Android內部儲存空間會掛載到Termux家目錄下的~/storage

~/storage/shared底下目錄可看到Android內部儲存空間的所有檔案

~ $ ls ~/storage/shared/
Documents  Android     Download   Movies     Pictures
DCIM        Music

不過,Termux沒有Root權限是無法存取Android/data目錄的。

我們可以用cp指令複製Termux內的檔案到Android手機內部儲存空間

cp ~/file.txt ~/storage/shared/Download/

同樣也可以把Android手機內部儲存空間的檔案複製到Termux家目錄

cp ~/storage/shared/Download/file.txt ~

小心:執行rm -rf是能把Android手機內部檔案儲存空間的檔案全部刪除的(除了需要root權限存取的目錄以外),請謹慎操作指令。

請不要將軟體或者指令稿放到Termux以外的Android內部儲存空間目錄執行,很容易出現權限問題。

proot-distro存取Android手機內部儲存空間
#

執行 proot-distro指令進入Linux容器的時候,Termux預設會把~/storage/shared掛載到容器內部的/sdcard

所以在proot環境內,可以從/sdcard存取Android手機內部儲存空間的檔案。

Termux存取SD卡檔案
#

Android手機插入SD卡與OTG裝置後通常會掛載在/storage

Termux無法存取外接SD卡與OTG裝置,必須使用Root權限才得以存取該目錄。

Termux使用Root權限存取Android系統目錄
#

在有安裝Magisk或者KernelSU的情況下

使用sudo 指令提升權限便可以存取Android系統的任意目錄

sudo ls /

搭配BusyBox存取Termux環境?
#

是否能在Root過的Android Shell使用Busybox執行Termux環境下安裝的套件?

有點困難,不建議這樣做,建議直接用chroot。

備份Termux環境的檔案
#

最好的方式是直接複製到Android內部儲存空間

有Root權限更好

參見 Termux備份還原檔案

參考資料
#

相關文章

Android裝Ubuntu,Termux以QEMU模擬執行x86_64架構的Linux虛擬機
分類   智慧型手機 Termux教學
標籤   Termux QEMU Docker Podman
Android手機玩Steam上的Windows遊戲 ~ Mobox模擬器使用教學
分類   智慧型手機 Termux教學
標籤   Steam Termux Android
Termux Proot安裝Box64與Box86,Android手機執行Windows exe
分類   智慧型手機 Termux教學
標籤   Box86 Box64 Wine ExaGear

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。