我最近被授予了使用工作中的一台机器的权限。但是,我在设置开发环境时遇到了麻烦。有关该机器的相关信息:
$ uname -a
Linux blackhawk2 3.2.0-41-generic #66-Ubuntu SMP Thu Apr 25 03:27:11 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
我使用 OpenSSH 远程登录这台机器。我立即注意到的是,我的主目录设置不正确。
$ echo $HOME
/
我首选的 shell 是 Bash,但是:
$ echo $SHELL
/bin/csh
我知道主目录和默认 shell 设置在 '/etc/passwd' 中。检查此文件我发现:
glperez:x:1015:1015:glperez,,,:/home/glperez:/bin/bash
编辑:我的主目录确实存在,并且“/bin/bash”正常工作。此外,用户身份验证是通过某种身份验证服务器处理的。不幸的是,目前我还没有这些信息。
奇怪的是,我尝试修复此问题两次,第一次登录时都出现了预期的行为。也就是说,我的主目录设置正确,并且我的 shell 是 Bash。再次登录时,问题又出现了。
答案1
阅读man 1 login
,阅读。同时查看中/etc/login.defs
的内容$PATH
。$LOGNAME
我会确保它/home/glperez
确实存在,使用ls -ld /home/glperez
。如果它不存在,并且/etc/login.defs
允许,您将获得一个登录目录当然存在,/
。
您还可以检查是否/bin/bash
存在、是否可执行以及是否包含在/etc/shells
ls -l /bin/bash;ldd /bin/bash;grep /bin/bash /etc/shells
您应该询问blackhawk2
sysadm 如何创建帐户glperez
。useradd
或者adduser
?什么参数?您应该有一个加密的主目录吗?是blackhawk2
在本地还是通过网络(检查/etc/nsswitch.conf
)对用户进行身份验证?如果通过网络,该服务器会如何看待您?
答案2
如果你确定你确实有这一行:
glperez:x:1015:1015:glperez,,,:/home/glperez:/bin/bash
在/etc/passwd
文件中,那么你应该检查所有shell 初始化文件比如~/.bashrc
,~/profile
等等。很可能你在其中一个文件中有类似以下命令的内容:
ksh #change the shell to ksh
cd / #chenge the working directory to /
HOME=/
SHELL=/bin/ksh
答案3
下面将以类似于您登录时运行的方式运行 bash,但会输出它运行的每个命令的文件名和行号。它应该可以帮助您找出它在哪里更改了变量SHELL
。
PS4='+ $BASH_SOURCE:$LINENO:' bash -xlic ''
答案4
问题出在我的 UID 上。出于某种原因,我的 UID 不一致。
当查找用户名并给我一个临时的 UID 时,似乎出了点问题。
我现在正在联系系统管理员来解决这个问题。
感谢大家的回复!