Answers:
$ PATH是用于查找命令的环境变量。〜是您的主目录,因此〜/ bin将是/ home / user / bin; 这是一个普通目录。
例如,在外壳程序中运行“ ls”时,实际上是在运行/ bin / ls程序。确切的位置可能会有所不同,具体取决于您的系统配置。发生这种情况是因为/ bin在$ PATH中。
要查看路径并找到任何特定命令的位置,请执行以下操作:
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls # searches $PATH for an executable named "ls"
/bin/ls
$ ls # runs /bin/ls
bin desktop documents downloads examples.desktop music pictures ...
$ /bin/ls # can also run directly
bin desktop documents downloads examples.desktop music pictures ...
要拥有自己的专用bin目录,只需将其添加到路径中。为此,请编辑〜/ .profile(一个隐藏文件)以包括以下几行。如果对行进行注释,则只需取消注释即可。如果他们已经在那儿,那就大功告成!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
现在,您需要创建〜/ bin目录,因为.profile在登录时运行,并且仅在当时存在〜/ bin时添加,所以您需要再次登录以查看更新的PATH。
让我们测试一下:
$ ln -s $(which ls) ~/bin/my-ls # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls # lookup through $PATH
bin desktop documents downloads examples.desktop music pictures ...
$ ~/bin/my-ls # doesn't use $PATH to lookup
bin desktop documents downloads examples.desktop music pictures ...
type
shell查看实际命令将如何使用更为有用。例如:which echo
并且type echo
将报告不同的内容,which
返回'/ bin / echo',但是'type'返回它是shell内置的,相对于'/ bin'中的文件,shell会更喜欢。
which
最好用交互式shell 替换type
或command
在交互式shell中使用,并且在脚本中完全没有用。
$HOME
变量$PATH
不起作用,即必须使用~
符号代替。
关于~/bin
和命令/程序仅对您的用户可用
最新的Ubuntu版本在~/bin
目录中包含该目录$PATH
,但前提是该~/bin
目录存在。
如果不存在:
确保您~/.profile
包含以下节(缺省值~/.profile
已经包含):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
创建~/bin
目录:
mkdir -p ~/bin
重新启动计算机,或强制bash重新读取~/.profile
:
exec -l bash
exec -l bash
”提示。什么是-l
标志吗?我在中找不到解释man exec
。
exec -l
将执行bash作为登录shell [ wiki.bash-hackers.org/commands/builtin/exec]。简而言之,它迫使bash重新阅读/etc/profile
和~/.profile
。刚运行exec bash
只会重新读取~/.bashrc
。