首页 > 解决方案 > bash: C:/Program: 没有这样的文件或目录

问题描述

我是 Docker、Debezium、Bash 和 Kafka 的新手。我正在尝试在 Windows 10 上运行 MSSQL Server 的 Debezium 教程/示例:

https://github.com/debezium/debezium-examples/blob/master/tutorial/README.md#using-sql-server

我可以按照第一步启动拓扑。但是,当我转到第二步并执行以下命令时:

cat debezium-sqlserver-init/inventory.sql | docker exec -i tutorial_sqlserver_1 bash -c '/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'

我收到以下错误:

bash: C:/Program: 没有这样的文件或目录

我不知道为什么它甚至会拖到C:/Program这一点。我没有在命令中看到它,也没有在 *.sql 文件中看到它。有谁知道为什么会发生这种情况以及解决方法是什么?

注意1:我已经在这个命令应该可以运行的当前目录中,并且文件夹/文件路径中没有空格

注意 2:我在 Git Bash 中运行命令


使用set -x来记录命令的运行方式时,仍然没有C:/Program任何内容,如下面的日志所示:

$ cat debezium-sqlserver-init/inventory.sql | docker exec -i tutorial_sqlserver_1 bash -c '/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'
+ cat debezium-sqlserver-init/inventory.sql
+ docker exec -i tutorial_sqlserver_1 bash -c '/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'
bash: C:/Program: No such file or directory

标签: bashcurlapache-kafkadebezium

解决方案


我昨天遇到了类似的问题,解决方案是在绝对路径之前添加一个反斜杠,例如:

cat debezium-sqlserver-init/inventory.sql | docker exec -i tutorial_sqlserver_1 bash -c '\/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD'

\/opt/mssql-tools/bin/sqlcmd 阻止转换为 Windows 路径。


推荐阅读