在一个shell中,有什么区别?
. executable
和
./executable
在第一个,点source权利的捷径? 那么./executable和source executable有什么区别吗?
PE目录的名称
为什么一个可移植的可执行文件在清理和重build之后会发生变化(忽略时间戳)
有什么办法来创build一个Shorcut桌面到Node.js(npm)应用程序?
当Windows能够find它时,如何findMercurial可执行文件的完整path?
如何实现readlink来查找path
Windows如何执行汇编程序?
在运行时重新编译可执行文件是否安全?
从SFX删除“该程序可能没有正确安装”的警告
LINUX:是否有可能编写一个不依赖于libc库的工作程序?
基本的区别是,
./foo.sh - foo.sh will be executed in a sub-shell source foo.sh - foo.sh will be executed in current shell
一些例子可以帮助解释这种差异:
假设我们有foo.sh :
#!/bin/bash VAR=100
来源:
$ source foo.sh $ echo $VAR 100
如果你 :
./foo.sh $ echo $VAR [empty]
另一个例子, bar.sh
#!/bin/bash echo "hello!" exit 0
如果你像这样执行它:
$ ./bar.sh hello $
但如果你来源:
$ source bar.sh <your terminal exits,because it was executed with current shell>
./executable运行当前工作目录中的可执行文件。 ( executable是不够的,如果$PATH没有,通常没有)。 在这种情况下, executable可以是一个elf二进制文件,或者是一个以#!/some/interpreter开头的脚本,或者任何你可以exec的脚本(在Linux上它可能是所有的东西 ,这要归功于binfmt模块)。
. executable . executable将shell脚本导入当前shell,无论它是否具有执行权限。 没有新的进程被创建。 在bash ,根据$PATH变量搜索脚本。 脚本可以设置环境变量,这些变量将保持在你的 shell中,定义函数和别名等等。
在第二个中给出路径: ./是当前的工作目录,所以它不在PATH搜索可执行文件,而是在当前目录中搜索。
source将可执行文件作为参数并在当前进程中执行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。