【发布时间】:2019-01-09 11:43:12
【问题描述】:
我在 Mac OSX 上有一个脚本,它在打开新终端时执行。它在.zprofile 中指定。它有一个 bash shebang,但它仍然使用 zsh(我的默认 shell)执行。这里可能有什么问题?
#!/bin/bash
核心问题是由于 zsh 语法的差异,我无法执行脚本。当我分析可能导致这种情况的原因时,我意识到 shebang 只是被忽略了。
我有一个二进制 /bin/bash 顺便说一句。
编辑:
~/.zprofile 执行脚本如下:
. ~/.script.bash
【问题讨论】:
-
根据
bashreference manual 上的SHELL,If it is not set when the shell starts, Bash assigns to it the full pathname of the current user’s login shell.所以,仅仅因为/bin/zsh被回显并不意味着它是zsh执行脚本。你是如何执行.zprofile中的脚本的? -
@cody 是的。我只是将终端的 shell 设置为不同的东西(但将 zsh 保留为默认值),即使这次实际使用了 bash,$SHELL 仍然是 zsh。我会将脚本的执行位添加到问题中。
-
@cody 我编辑了问题以解决实际问题,省略了 $SHELL 部分。
-
CVers - 这不是错字;拼写错误是无意的错误,如果 OP 尝试更仔细地重新输入相同的内容,则不会重复。这是故意这样写的。