Shell脚本来设置环境variables

我希望编写一个shell脚本来导出variables。

下面我列出了脚本。

echo "Perform Operation in su mode" export ARCH=arm echo "Export ARCH=arm Executed" export PATH='/home/linux/Practise/linux-devkit/bin/:$PATH'; echo "Export path done" export CROSS_COMPILE='/home/linux/Practise/linux-devkit/bin/arm-arago-linux-gnueabi-'; echo "Export CROSS_COMPILE done" 

但是这似乎不能正常工作。 我必须在shell提示符下单独执行这些命令。

请向我们展示脚本的更多部分,并告诉我们您必须单独执行哪些命令并且想要简单。

同时你必须使用双引号而不是单引号来扩展variables:

 export PATH="/home/linux/Practise/linux-devkit/bin/:$PATH" 

单个命令结尾的分号也是不必要的。

至今:

 #!/bin/sh echo "Perform Operation in su mode" export ARCH=arm echo "Export ARCH=arm Executed" export PATH="/home/linux/Practise/linux-devkit/bin/:$PATH" echo "Export path done" export CROSS_COMPILE='/home/linux/Practise/linux-devkit/bin/arm-arago-linux-gnueabi-' ## What's next to -? echo "Export CROSS_COMPILE done" # continue your compilation commands here ... 

对于你可以运行它:

 su -c 'sh /path/to/script.sh' 

(对于那些不满意这个答案的人,你应该知道OP没有明确地要求一个shell脚本能够在-interactive-shell上导出variables – 而不是在一次运行的shell脚本中使用source或者.没有意义,除非你真的从另一个脚本调用脚本,当然你可以使用source.如果这是真正必要的,但也有另外一个问题需要解决,而且似乎是这个问题上下文是单引号的用法。

不要因为它不能帮助你而降低它的效果。 答案是针对所提出的问题和OP。

如果OP实际上提到了它确实是通过shell脚本在交互式shell上设置可导出的环境variables的话,它将会应用。

您需要以source或简写forms运行脚本.

 source ./myscript.sh 

要么

 . ./myscript.sh 

这将在现有的shell中运行,确保在脚本完成之后脚本创build或修改的任何variables都可用。

使用文件名运行脚本将在单独的子shell中执行脚本。