mac命令行可执行文件为什么要加“./”才运行?

我看到别人的mac电脑上,sh脚本不需要在前面加“./”的。
如何设置?

阅读 14.7k
5 个回答

1.chmod u+x xxx.sh
给当前文件加可执行权限。
2.在脚本中第一行加入 #!/usr/bin/env bash
当直接当脚本运行时,告诉操作系统用bash解释器。
3.export PATH="$PATH:." 加入~/.bashrc
“.”即当前目录加入你的$PATH,这样搜索可执行文件时才能找到你的脚本。

很简单,你直接执行 xx.sh的话,shell会在$PATH变量包含的路径里去找文件。但是,unix/linux为了安全的问题,并没有把当前路径放到$PAHT中,并且也不推荐这样做

./ 是指当前目录而已

设置你自己的$PATH环境变量,例如配置你的bashrc,加入一行:

export PATH="$HOME/scripts:$PATH"

并且给你的shell脚本加上可执行属性(chmod +x XXX

然后这些脚本只要在你的PATH环境变量下面的,此例中为你的家目录的scripts目录下,可以在任意目录下执行

如果没有在 $PATH 中添加路径,那么 shell,只能去某个路径下查找然后执行,./ 代表的就是当前的路径。。
Unix/Linux 下都是这样。

= - =当然,如果你把这个路径加入了 $PATH 就另待别论了。

我有点好奇,题主看到的是什么脚本。。很多脚本可以直接写好后,可以 link 进 $PATH 的。。比如 Ruby 用 GEM build 一下啦,js 用 node build 一下啦。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进