【发布时间】:2016-09-29 03:55:45
【问题描述】:
我有一个以#!/bin/sh shebang 开头的脚本 (A)。
还有另一个文件 (B) 不是以 #!/bin/sh 开头的;它有一些环境变量,我需要为A 设置它们才能工作。
文件B 运行良好,并在从.bash_profile 执行时设置变量。例如,在我的.bash_profile 文件中:
{. /(full_path)/(envname)/(filename).sh;}
当我在我的A 脚本文件中写入同一行时,什么也没有发生。为什么不呢?
我做了echo $env_variable_name;当通过.bash_profile 执行时,这给了我正确的路径,但在通过我的脚本A 时给了我空白。我试过了
/(full_path)/(envname)/(filename).shSCRIPT_FULL_NAME=$(readlink -f "$0") SCRIPT_PATH=$(dirname $SCRIPT_FULL_NAME) sh ${SCRIPT_PATH}/(filename).sh
我该怎么办?
【问题讨论】:
-
欢迎来到 Stack Overflow。请阅读stackoverflow.com/help/how-to-ask 了解如何编写问题的指南。对于初学者: 1. 请格式化您的代码。 2. 在您的问题中添加更多代码,以帮助我们更好地理解它,并让未来的读者从这个问题中受益。 3. 寻找其他可能对您有所帮助的问题。例如stackoverflow.com/questions/8352851/… 4. 格式化您的文本,并给我们一个最小的工作示例。
-
您的
B文件中有什么内容?确保它没有 bashisms(例如export foo=bar而不是foo=bar; export foo) - 或将A的解释器更改为/bin/bash。您应该能够使用sh -x A跟踪执行;这通常有助于调试 shell 脚本。