我正在尝试编写一个可以为我启动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
命令?
答案 0 :(得分:0)
如果从命令行输入xilinx ise
,则使用脚本自动执行以下命令:
$ cd /home/sclukey/Xilinx
$ source /opt/Xilinx/14.6/ISE_DS/settings32.sh
$ ise
脚本的响应表明路径中没有ise
程序。我会检查ise
的位置,以及settings32.sh
是否设置了路径。
答案 1 :(得分: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