我有一个 bash 脚本,它应该执行一些命令。这些命令在终端中输入时工作正常,但当我尝试从脚本内部执行它们时,它们不起作用,因此我认为这是特定于环境的。
在脚本中我有
exec "$cmd"
并且它不起作用,但是如果我复制 $cmd 的内容并粘贴到终端中它就可以正常工作。
如何在运行脚本时保留当前环境?或者您有其他想法吗?
答案1
arr=(foo bar baz quux)
exec "${arr[@]}"
答案2
set -o allexport
在 bash 脚本顶部输入。这会自动导出您定义的所有变量。(请注意,这被认为是不好的做法;更好的做法是只导出适当的变量)。
答案3
如果所有命令都应该从同一个目录运行,您可以使用
cd /d $Location
在脚本的开头设置要运行的命令的位置。
cd——这是更改目录命令。/d——此开关使 cd 同时更改驱动器和目录。
如果你希望从 D:\scripts 运行命令而不使用 /d,你需要
D:
cd \scripts
但使用上面的命令,你可以在一行中完成
cd /d D:\scripts
—再次编辑—
很抱歉,上面清楚地写的是 BASH,但是出于某种原因我在 BATCH 中读到了它。以后会更加小心。