【问题标题】:How to run zookeeper.sh file in windows如何在 Windows 中运行 zookeeper.sh 文件
【发布时间】:2020-07-13 00:11:57
【问题描述】:

我正在关注this 教程,我必须运行此命令才能启动 Zookeeper 服务器。

./bin/zookeeper-server-start.sh config/zookeeper.properties

但问题是这个命令不能正常工作。我发现 .sh 文件是需要 cygwin 的 bash 文件。我已经安装了它,然后像这样运行命令

C:\cygwin64\bin\bash.exe ./bin/zookeeper-server-start.sh config/zookeeper.properties

但它正在显示:

我可以确认该文件在 bin 目录中存在。我做错了什么?

这是我运行命令的目录快照:

注意:我已经成功测试了bin/windows zookeeper bat 文件,但我想通过 .sh 文件作为the kafka security tutorial 运行它,我正在使用它。

【问题讨论】:

    标签: windows bash cygwin sh apache-zookeeper


    【解决方案1】:

    从您的屏幕截图中,我断定您正在使用 Cygwin。因此,请在您的问题中添加 cygwin 标签。

    从报错信息可以看出,命令dirname没有被bash找到,所以假设你的Cygwin安装没有损坏,我假设PATH设置不正确;在您的设置中,dirname.exe 应该在 C:/cygwin64/bin 中(请验证这一点)。

    您对 bash.exe 的使用有点不寻常,因为您直接从 Windows cmd 提示符运行它。更常见的方法是从“Cygwin 终端”使用它,在安装 Cygwin 时,您会创建一个 Windows 链接到该终端,或者使用另一个合适的终端程序;我正在为此任务使用例如 mintty(也可以通过 Cygwin 安装程序获得)。

    话虽如此,可以按照您的方式运行 bash.exe,但是您必须确保至少 PATH 设置正确。一种可能的做法是将 C:\cygwin64\bin 添加到您的 Windows PATH 中,但这有一个缺点,即某些命令在 Windows 世界和 Cygwin 中具有相同的名称,尽管它们的用途完全不同,并且这迟早会咬你。另一个问题是,在某些时候,您将依赖 PATH 之外的其他 bash 特定设置。

    实现目标的更好方法是 IMO 确保系统范围的 bash 初始化文件来自 bash。如果我必须从 Windows cmd 提示符运行脚本,我会运行它

    C:\cygwin64\bin\bash.exe --login YOURSCRIPT
    

    这将在运行 YOURSCRIPT 之前读取文件(在您的设置中)C:\cygwin64\etc\profile,因此您可以通过查看此文件来检查 PATH 是否正确设置在那里。在默认安装中,应该是这种情况。

    读完这个文件后,它会尝试在你的 Cygwin HOME 目录中读取文件.bash_profile,所以如果你需要为你的(非交互式)bash 脚本做额外的设置,创建这个文件并把你的设置放在那里.

    【讨论】:

    • 不,如您所见:bash 被执行。 dirname 未找到。您必须仔细阅读错误消息。
    • 我已经更新了问题中的目录结构。请看有问题的图片。我从那个位置运行这个 C:\cygwin64\bin\bash.exe ./bin/zookeeper-server-start.sh ./config/zookeeper.properties
    • 我看不出您的目录结构与您的问题有什么关系。您可以随意布局您的目录。只需按照我的回答中的建议!
    • 从“Cygwin 终端”运行命令。它将避免从 CMD 运行 bash 的需要
    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 2011-02-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    相关资源
    最近更新 更多