Debian 10 上‘别名’的全局使用

Debian 10 上‘别名’的全局使用

我一直尝试在我的 Debian 10 实例上添加别名的全局使用,但没有成功。

我已经尝试过将我的别名添加到 /etc/bash.bashrc 以及将此代码片段添加到 /etc/profile 以获取它,但是它不起作用。

if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi

在我的bash.bashrc中:

#Aliases 
alias l='ls -la' 
alias ll='ls -l' 
alias la='ls -a'

编辑*

如何为“ls”创建别名。例如,ls='ls -CF'。当我将其用作别名时,它不起作用?

答案1

Debian 应该与 /etc/bash.bashrc 配合使用。检查/etc/passwd并确保用户正在使用 bash shell。

user1:x:1000:1000:User 1:/home/user1:/bin/bash
user2:x:1001:1001:User 2:/home/user2:/bin/zsh

默认情况下,使用 useradd 或 adduser 添加用户将使用 bash 作为 shell,但这可能已被修改为其他 shell(zsh 非常流行)。在上面的示例中,user1 使用 bash shell,user2 使用 zsh。User2 在登录时不会运行 /etc/bash.bashrc。

答案2

看着我的,~/.bashrc我可以看到ls已经被定义为alias ls='ls --color=auto'

向as添加新的ls别名定义没有帮助,因为我认为中的定义是覆盖的。/etc/bash.bashrcalias ls='ls -CF'~/.bashrc

在我的测试中,注释掉ls我在启用中定义的别名,~/.bashrc并将其添加到全局定义中以便etc/bash.bashrc工作。

这与 Red Hat 处理全局别名的方式有很大不同,Red Hat 允许您输入全局别名,/etc/profile.d/[filename].sh但由于 Debian 和 Red Hat 的配置方式以及配置文件和 bashrc 文件之间的关系不同,这似乎不是 Debian 的选项。

我的意思是,对于 Red Hat 来说,它通过获取配置文件/bashrc 文件来处理它们,以便它们适用于各种 shell/登录类型(如此处所述https://unix.stackexchange.com/questions/170493/login-non-login-and-interactive-non-interactive-shells)。但是,对于 Debian,这些文件似乎/etc/profile.d/*.sh仅用于登录 shell。但由于我之前的回答被删除了,我无法编辑和澄清。

对于 Debian,如果您希望全局别名仅适用于登录 shell,那么请将它们放入,例如/etc/profile.d/aliases.sh。否则,您似乎需要将它们添加到/etc/bash.bashrc。请记住 中的别名~/.bashrc将优先。如果您定义的别名不起作用,那么很可能它们是在其他地方定义的并且覆盖了您的别名。

相关内容