0

我正在尝试编写一个将为我启动 Xilinx 程序的 shell 脚本,但我的 source 命令有问题。这是我的脚本,名为xilinx

#!/usr/bin/env bash
cd /home/sclukey/Xilinx
source /opt/Xilinx/14.6/ISE_DS/settings32.sh
$@

如果我只是调用xilinx脚本返回

. /opt/Xilinx/14.6/ISE_DS/common/.settings32.sh /opt/Xilinx/14.6/ISE_DS/common
. /opt/Xilinx/14.6/ISE_DS/EDK/.settings32.sh /opt/Xilinx/14.6/ISE_DS/EDK
. /opt/Xilinx/14.6/ISE_DS/PlanAhead/.settings32.sh /opt/Xilinx/14.6/ISE_DS/PlanAhead
. /opt/Xilinx/14.6/ISE_DS/ISE/.settings32.sh /opt/Xilinx/14.6/ISE_DS/ISE

但是如果我运行xilinx ise,那么source命令的输出就会丢失,它只是返回

/usr/local/bin/xilinx: line 4: ise: command not found

我相信这是因为当使用参数调用脚本时源命令没有运行。为什么会这样,我该如何解决?

谢谢

编辑:我发现这是因为settings32.sh文件使用了$1参数,并且当使用参数xilinx调用脚本时,这些参数也会传递给source破坏settings32.sh脚本的命令。那么如何阻止参数传递给source命令呢?

4

2 回答 2

0

使用您的脚本,如果xilinx ise从命令行输入以下命令,您将自动执行以下命令:

$ cd /home/sclukey/Xilinx
$ source /opt/Xilinx/14.6/ISE_DS/settings32.sh
$ ise

脚本的响应表明ise路径中没有程序。我会检查看看在哪里ise,是否settings32.sh为它设置了路径。

于 2013-08-05T16:16:19.503 回答
0

它似乎是它响应命令行参数并吞下它们/opt/Xilinx/14.6/ISE_DS/settings32.sh的脚本之一。source尝试在采购之前保存它们,然后擦除它们:

#!/usr/bin/env bash
args=$@
shift

cd /home/sclukey/Xilinx
source /opt/Xilinx/14.6/ISE_DS/settings32.sh

$args
于 2013-08-05T16:25:59.243 回答