看不到别名

看不到别名

我有我的 root 用户和另一个用户 testuser。现在在 testuser 的 .bashrc 中,有一些别名,例如 ls -a 的 la 。但是当我登录到 testuser 并尝试运行 la 时,它给出了错误:-sh: la: not find

即使当我尝试查找 $HOME 时,它也会说权限被拒绝(?)

这减慢了我的工作速度!帮助!

答案1

来自 shell 的消息以 开头-sh。这给出了两个重要线索:

  • 前导-表明这是一个登录 shell。按照惯例,登录程序(您在其中键入用户名和密码的程序,可以是login、gdm、sshd 等)启动一个 shell,程序名称设置为以额外的-.这样,shell 就知道它是登录 shell 并读取~/.profile或其他会话启动文件。
  • 外壳的名字是sh。因此用户的登录 shell 设置为/bin/sh,而不是 bash。要么/bin/sh是 bash 的符号链接,要么是其他 shell,例如 dash。当以 name 调用 bash 时sh,为了兼容性,它不会读取其配置文件,而只会读取标准文件(在登录 shell~/.profile/etc/profile,在非登录 shell 中不会读取任何文件)。所以无论哪种方式~/.bashrc都不会被读取。

如果您显式调用 bash,它将读取.bashrc.即使您已经指定了命令,您也需要传递-t标志来告诉它打开终端。ssh

ssh -t testuser@nameofhost bash

您可能希望将用户的登录 shell 切换为 bash 而不是/bin/sh.作为testuser,运行命令

chsh -s /bin/bash

/usr/local/bin/bash更改bash 所在位置的路径。如果您chsh不带参数调用,您将得到一个菜单,显示您可以选择哪些 shell。

答案2

您可以检查系统范围的 /etc/bashrc 和/或 /etc/profile 文件。您也可以将类似的内容添加到文件中:

if [ `whoami` == "testuser" ] 
then  
   alias x='echo x' # alias list..
fi

相关内容