linux - dirname 的选项无效

标签 linux bash

我有一个名为 abc.sh 的简单脚本,如下所示,用于设置环境变量

#!/bin/bash
sourcePath () {
filename=`basename $0`

current_dir="./"$filename
if [ "$current_dir" = "$0" ]; then        SRC_DIR=$(pwd) 
         SRC_DIR=$(cd "$SRC_DIR/.."; pwd)
else        SRC_DIR=$(cd "$(dirname "$0")/.."; pwd)
fi
}

sourcePath
echo $SRC_DIR
export SRC_DIR

我希望此脚本在我当前的 shell 环境中设置变量 SRC_DIR。因此,当我执行 source abc.sh 时,我收到一条错误消息,指出 dirname 的选项无效。 但是如果我用 ./abc.sh 运行这个文件,我不会得到任何错误,但是它不会导出变量

最佳答案

部分问题是当您获取脚本时 $0 具有不同的值,因为获取脚本与直接向 shell 键入命令是一样的。因此,当您运行脚本时,$0 是 abc.sh,但是当您获取它时,$0 是/bin/bash。您可以通过设置 -x 标志来查看:

set -x
source abc.sh

但我不能确定这是唯一的问题,因为当我获取脚本时,我没有从 dirname 得到错误,并且脚本打印“/”。

关于linux - dirname 的选项无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11633161/

相关文章:

bash - 在使用 systemd 启动 httpd 服务之前运行 bash 脚本

linux - 当应用程序崩溃并且 Qt Creator (GDB) 不提供回溯时该怎么办?

linux - linux mint 上的 ejabberd 服务器问题

c - GCC 编译选项语法

linux - bash - 禁用日志文件的最佳优雅方式

regex - 如何删除双引号内的新行?

linux - 在 Jenkinsfile 中使用 sed 替换 pom 版本

linux - 创建显示较少删除行的补丁

linux - bash 脚本中的 -Ron 是什么意思?

bash - 缩短 Bash 输出命令