在 Ubuntu 16.04 中,我将以下代码添加到/etc/bash.bashrc
:
alias ll="ls -la --group-directories-first"
Run Code Online (Sandbox Code Playgroud)
然后我重新启动。
注意:我使用/etc/bash.bashrc
是因为我需要一个文件中的所有别名,并且可供所有用户使用。
我的意图是重写“本地”ll
别名。然而它并没有改变;如果我转到任何包含目录和文件的目录,然后执行ll
,我会得到一个列表,目录没有在文件上方排序。换句话说。
我做错了什么?
该ll
别名在默认定义.bashrc
。
别名定义是一个命令。Bash 是一种命令式语言,它一个接一个地执行命令。如果同一个别名有多个定义,则每次 shell 执行其中一个定义时都会重新定义别名。因此,最后一个定义获胜。
当 bash 启动时,它会在读取/etc/bash.bashrc
用户文件之前读取系统文件~/.bashrc
。因此, 中的定义~/.bashrc
会覆盖 中相同别名的任何定义/etc/bash.bashrc
。你不能(理智地)做任何事情/etc/bash.bashrc
来防止在~/.bashrc
.
将便利别名强加给用户是没有意义的。这就是为什么ll
在中定义~/.bashrc
而不是在/etc/bash.bashrc
. 因此,与其将首选定义放在系统文件中,不如将其放在用户文件中。
您可以更改默认设置.bashrc
- 即/etc/skel/.bashrc
. 创建用户帐户时,此文件将复制到用户的主目录。更改文件/etc/skel
对已存在的帐户没有影响。但即使这样也不是一个好主意,因为您所定义的是个人偏好。
归档时间: |
|
查看次数: |
1494 次 |
最近记录: |