我正在设置一个全新的 Ubuntu 16.04 Minimal 系统,但遇到了一个奇怪的问题。即使添加到 后$HOME/bin
,$PATH
似乎bash
也找不到其中的任何脚本,至少对于root
.
我已经退出好几次了,甚至重新启动过一次机器。该路径由/etc/profile.d
:中的一行脚本设置export PATH="$PATH:$HOME/bin"
。
root@Pioneer ~ # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/bin
root@Pioneer ~ # ls -la /root/bin
total 36
drwxr-xr-x 2 root root 4096 Feb 6 16:04 .
drwx------ 8 root root 4096 Feb 6 16:03 ..
-rwxr-xr-x 1 root root 174 Jan 5 2017 newuser
-rwxr-xr-x 1 root root 236 Nov 3 2015 own
-rwxr-xr-x 1 root root 87 May 6 2017 re-dns
-rwxr-xr-x 1 root root 57 May 10 2016 re-ftp
-rwxr-xr-x 1 root root 89 Oct 20 2015 re-mail
-rwxr-xr-x 1 root root 42 Oct 19 2015 re-smb
-rwxr-xr-x 1 root root 65 Oct 19 2015 re-web
root@Pioneer ~ # newuser
-bash: newuser: command not found
/root/bin/newuser
有效,就像 一样cd /root/bin && ./newuser
。
名称中没有尾随空格:
# ls -lb /root/bin/newuser
-rwxr-xr-x 1 root root 174 Jan 5 2017 newuser
Root 的家确实是/root
:
# getent passwd root
getent: root:x:0:0:root:/root:/bin/bash
答案1
谢谢特登对于小费;通过使用,strace -e stat bash -c "newuser" 2>&1 | grep /root/bin
我发现一个不可见的回车符以某种方式楔入配置文件脚本中的结束引号之前,使实际的路径成为/root/bin\r
.我删除并重新输入了路径,现在它可以工作了。