![`source .../settings.csh` 无法从 `sh ./test.sh` 运行](https://linux22.com/image/90279/%60source%20...%2Fsettings.csh%60%20%E6%97%A0%E6%B3%95%E4%BB%8E%20%60sh%20.%2Ftest.sh%60%20%E8%BF%90%E8%A1%8C.png)
我想使用setiin64.csh
该命令获取 Xilinx ise 文件source
。
我有
source /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh
在另一个文件中,test.sh
.所以我只想运行test.sh
文件
sh ./test.sh
但当我这样做时,我并没有获得 Xilinx ISE 14.5 版本which ise
。
如果我执行命令
source /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh
直接在终端中就可以正常工作了。
答案1
除非setiin64.csh
C-shell 脚本与 兼容sh
,否则 shellsource /home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh
中sh
不应工作。但你这么说,所以我必须相信你的话。
您不能编写一个脚本来获取该文件并运行它sh test.sh
并期望环境变量将在当前的外壳环境。
设置sh test.sh
一个新的环境,在其中该source
命令将用于源setiin64.csh
(我仍然很难相信这实际上会起作用,它是一个csh
脚本)。一旦test.sh
执行完成,这个新环境将被删除。其中设置的任何变量都不会传输到最外层环境(您的 shell 会话)。
你可以
source test.sh
但这正是您从一开始就做的事情,您也可以获取一个符号链接来/home/xilinx/ise_14.5/14.5/ISE_DS/settings64.csh
代替。
最好的解决方案可能只是从命令行(或从 shell 初始化文件之一)获取文件。