这是我的 .profile 中的最后一行:
alias gl="cd /home/jrenner/glances/glances"
但即使重启后,输入 gl 时仍提示“未找到命令”。发生了什么?我以正确的用户身份登录。
答案1
有两个相关原因导致别名在放入文件中时并不总是有效.profile
。第一个原因是.profile
(或.bash_profile
)文件仅针对登录 shell 运行。如果您在 X 下的终端窗口中启动 bash,则您的终端仿真器(例如 gnome-termanl)可能没有将 bash 作为登录 shell 运行。[大多数都有选项可以更改此设置(如果您愿意),但默认设置(无论如何对于 gnome-termal)不是将其作为登录 shell 运行。]
shell 将是一个交互式 shell,因此.bashrc
将运行。
但是,通常情况下,当启动 X 会话时,bash 已作为登录 shell 运行。因此,如果其中有别名命令,.profile
它们将与设置环境变量(如 PATH 等)一起执行。当打开终端窗口时,将运行新的 bash 实例以提示并执行该终端窗口中的命令。与环境变量不同,别名不能从一个 bash 实例导出到由它启动的新实例。因此别名不会传递给新 shell。
为了验证这一点,请尝试以下实验:
export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash #start a new bash instance
echo $ROBERT
alias james
exit #end the new bash instance and revert to the original one
echo $ROBERT
alias james
请注意,.bashrc
当 bash 作为登录 shell 启动时,不会运行 。因此,将别名放在那里并不总是有效,除非您的.bashrc
源自您的.profile
,这是一种非常常见的做法。
答案2
我非常确定 lpanebr 的想法是可行的,但这里有一个更优雅的解决方案。在 中执行该别名命令 这.bashrc
就是我的做法,或者有些人更喜欢添加一个专用于别名的文件。将其命名为.alias
或任何其他名称,然后添加.alias
到您的.bashrc
希望我能像@lpanelbr 那样进行格式化。我想知道是否有 wiki?
答案3
在 Ubuntu 中执行此操作的正确方法是将您的别名添加到~/.bash_aliases
。如果文件不存在,则创建该文件。
该文件(如果存在)从默认值调用~/.bashrc
,并且别名也将在您的终端仿真器中可用。
答案4
$ bash #start a new bash instance
这是我的服务器的问题。source .profile
出于某种原因,Simple 无法工作