"Shortcut" is a purely Windows concept. It's an ordinary file (with .lnk
extension) which contains a reference to some other file or folder. Windows Explorer and other programs know how to open the actual file by reading reference information from shortcut file, just like as they know how to open a .pdf
or .mp4
file. Other operating systems do not know what a .lnk
file is, because phenomenon of mounting partitions and hence file paths are different across different OSes.
At filesystem level, Windows' NTFS supports junction points, symbolic links and hard links (1). But FAT family (including exFAT
) supports none (2).
Android is based on Linux kernel. Linux's native filesystems (like ext4
) support hard links and soft (symbolic) links. For non-native filesystems (like FAT
) it depends on the filesystem driver. exfat
driver (for exFAT
filesystem) supports symlinks, but FUSE based exfat-fuse
does not. So is the old vfat
driver (for FAT[N]
filesystems). New sdfat
driver (for FAT[N]
/exFAT
filesystems) from Samsung does have optional symlink support for FAT[N]
filesystems as well. After MS open-sourced exFAT
, mainstream Linux driver is also based on sdfat
(3).
However that's not the end. External SD cards are usually formatted as FAT32
or exFAT
, so they may support symlinks depending on the driver being used. But Android does not expose actual filesystem to apps, instead it's emulated using FUSE or sdcardfs
. Emulation is another twisted story (basically a permission-less filesystem to make sharing files among different apps/UIDs possible), see detail in Android's Storage Journey and What is /storage/emulated/0/?.
FUSE drivers may support symlinks (if the underlying filesystem does), but Android's FUSE implementation does not. So is the in-kernel sdcardfs
implementation.
So in short, for the most cases, you cannot create symlinks on external SD cards as well as internal SD card. You will get "Operation not permitted" or "Function not implemented" or similar errors. On rooted devices a commonly used alternative is bind-mounts. See details in How can I make a symlink (or equivalent) inside /storage/emulated/0?