当前位置:首页>Linux>linux终端颜色显示方案不生效,ls不显示颜色分类的解决方法

linux终端颜色显示方案不生效,ls不显示颜色分类的解决方法

  • 2026-10-21 13:27:40
linux终端颜色显示方案不生效,ls不显示颜色分类的解决方法

点击↑深色口袋物联,选择关注公众号,获取更多内容,不迷路


问题

最近在集成amy62x平台时,发现默认生成的根文件系统,使用ls,文件和目录都是一个“颜色”,没有通过颜色进行区别

但在nxp平台上,默认是有颜色区分的,

如下所示,在不同的平台,都通过ssh登录,同样使用ls,但显示结果不同

分析

颜色方案,一般有2种选择

一种是终端控制,可能默认的配色不同,当然也可以自定义设置,

一种是命令控制,如在命令行敲入命令ls,实际上不同的平台,实际执行的不一定是ls,也许是ls --color=auto

定位

那么当前的问题,明显不是终端不同导致的,那是什么原因呢?

通过网络查找和AI问答,应该问题出在命令上

NXP平台使用了alias机制,将默认的ls,关系为ls --color=auto,导致其可以显示颜色

而Ti平台没有alias,就是ls,所以没有显示颜色

而在ti平台,使用ls --color=auto,同样可以显示不同的颜色

进阶

那么ls --color=auto到底在哪里关联上的呢

系统的配置文件,一般在etc目录,所以查找,确认在/etc/profile文件里存在

root@imx8mqrom5720a1:~# grep -rn color /etc//etc/profile:33:alias ls='/bin/ls --color=auto'

为什么要放到这个文件呢?

这就要从系统登录初始化说起

在用户登录时,分为系统级配置和用户级配置的设置和生效

系统级配置,主要涉及/etc/profile和/etc/bashrc;用户级配置,主要涉及~/.bash_profile、~/.bashrc、~/.profile,它们的主要功能如下描述:

  • • /etc/profile‌系统级登录初始化文件,所有用户登录时执行。包含全局环境变量(如 PATH、USER)和系统级配置。
  • • ‌/etc/bashrc‌,系统级交互式 shell 启动文件,所有用户每次打开新 shell 时执行。通常通过 ~/.bashrc 调用。
  • • ‌~/.bash_profile‌,用户级登录初始化文件,仅在用户登录时执行(如通过 SSH 登录或本地终端)。优先级高于 ~/.bashrc。
  • • ‌~/.bashrc‌,用户级交互式非登录,shell 启动文件,每次打开新 shell 时执行(如在终端中输入 bash 命令)。包含别名、函数和自定义提示符。
  • • ‌~/.profile‌,兼容性文件,某些系统(如 Debian)使用 ~/.profile 替代 ~/.bash_profile。登录时执行。

总的来说,这5种的主要特点如下

文件类型
作用
执行时机
/etc/profile
系统级环境变量
用户登录时
/etc/bashrc
系统级交互式 shell 配置
每次打开新 shell 时
~/.bash_profile
用户级登录环境变量
用户登录时(优先)
~/.bashrc
用户级交互式 shell 配置
每次打开新 shell 时
~/.profile
兼容性登录环境变量
用户登录时(次优先)

又因为在arm linux系统中,默认只存在/etc/profile中,所以只能修改它

解决

作为一名应用开发者,只要在profile中,加入如下代码,重启就可以生效

alias ls='/bin/ls --color=auto'

总结

颜色区分不同的文件或目录,确实可以给使用者带来方便

通过控制终端,可以实现,但不具备通用性,换了电脑或平台,可能就显示不同的特性

而使用ls自带的功能,可以大大方便使用

但每次多打 --color=auto,又显得累赘

所以作为一名bsp或系统工程师,怎样在制作根文件系统中,自动修改,让生成的根文件系统自动就生效就显得很有必要

接下来通过两篇,分别实现buildroot机制和yocto机制下的profile内容修改


最新文章

随机文章