我一直尝试在我的 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.bashrc
alias 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
将优先。如果您定义的别名不起作用,那么很可能它们是在其他地方定义的并且覆盖了您的别名。