如何在RedHat服务器上配置别名?

如何在RedHat服务器上配置别名?

我正在使用一个我是普通用户(非 sudo)的服务器。

我通过访问服务器ssh

以下是在服务器上运行的一些命令的输出:

[username@machinename: ~]$ ps -p $$
    PID TTY          TIME CMD
1332818 pts/55   00:00:00 bash
[username@machinename: ~]$ echo $$SHELL
1332818SHELL
[username@machinename: ~]$ echo $-
himBHs
[username@machinename: ~]$ uname
Linux
[username@machinename: ~]$ uname -v
#1 SMP Thu May 11 07:38:47 EDT 2023
[username@machinename: ~]$ uname -r
4.18.0-372.57.1.el8_6.x86_64
[username@machinename: ~]$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.6 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.6"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.6 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.6
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.6"

用户名和机器名被隐藏。

这是操作系统信息:

LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: RedHatEnterprise
Description:    Red Hat Enterprise Linux release 8.6 (Ootpa)
Release:    8.6
Codename:   Ootpa

通常要在 Ubuntu/Linux 上添加别名,我只需要编辑 ~/.bashrc 文件。但是这个文件在我第一次进入系统时并没有退出,所以我在我的主目录中自己创建了它并填充了别名:

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/tien/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/tien/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/tien/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/tien/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

export PATH="/usr/local/cuda-12.1/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH"

alias c='clear'
alias gpu='watch -n 0.5 nvidia-smi'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../../../'
alias .....='cd ../../../../'
alias h='history'
alias j='jobs -l'
alias gst='git status'

但是当我注销并重新登录时,别名不起作用。

那么我该如何调试呢?

以下是我的一些信息:

[username@machinename: ~]$ which alias
/usr/bin/alias
[username@machinename: ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'

答案1

我将其包含在 ~/.profile 中

# if running bash
# include .bashrc if it exists
[ -n "$BASH_VERSION" ] && [ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc"

答案2

你说红帽服务器...

查看/etc/profile.d/内容,您会看到一堆.sh.csh文件。如果/etc/passwd您的帐户登录是,/bin/bash那么它将引用这些.sh文件,如果/bin/csh/bin/tcsh那么.csh文件。

创建一个/etc/profile.d/my_aliases.sh;它可以命名为任何名称,只需具有.sh与您的帐户 shell 相关的结尾(或 .csh)即可。

只需将您的alias命令和其他任何内容转储到.sh下面的一个或多个文件中/etc/profile.d/,并为其授予 664 权限即可。

你可以扔一个

echo "hi from /etc/profile.d/myaliases.sh"

为了验证文件是否正在运行,您应该会在打开的任何终端窗口中看到打印的内容。

答案3

其他评论者建议将其添加到 ~/.profile 或 /etc/profile 中。但简介是与 bashrc 不同。前者仅针对登录/交互式 shell 运行。通常使用 rc 文件作为别名更合适。

我手头没有 Fedora 盒子,但在附近的 Ubuntu 盒子上,我有一个个人 ~/.bashrc 和一个系统范围的 /etc/bash/bashrc

如果 ~/.bashrc 不适合您,并且 /etc 中有一个系统范围的文件,我建议添加[ -f "${HOME}/.bashrc" ] && source "${HOME}/.bashrc"而不是在文件中内联添加别名。

相关内容