QShell脚本可以告诉它存储在哪个目录中吗?

时间:2014-04-16 09:12:30

标签: ibm-midrange

对于IBMi V6R1的QShell qsh

我厌倦了Getting the source directory of a Bash script from within

的建议

输出错误:

BASEDIR=$(dirname $0)
echo $BASEDIR

$ QSHELL/QZSHSH

QSHELL / QZSH不是执行脚本的位置。

请告知命令以找到执行脚本的路径。

2 个答案:

答案 0 :(得分:4)

您收到了该结果,因为您以交互方式运行命令而不是从shell脚本运行。

如果我在我的主目录中创建一个“test.sh”脚本:

#!/bin/sh
echo "$(cd "$(dirname "$0")" && pwd)"

我收到以下结果:

$ echo $(dirname $0)
QSHELL

$ echo $0
QSHELL/QZSHSH

$ cd / && pwd
/

$ sh $HOME/test.sh
/home/jamesa

$ cd && pwd
/home/jamesa

$ sh test.sh
/home/jamesa

答案 1 :(得分:1)

你是如何运行脚本的?

以下是我从引用帖子中拼凑而成的一个示例:

#!/bin/bash
BASEDIR=$(dirname $0)
echo BASEDIR=$BASEDIR
echo dollar zero=$0
echo "The script you are running has basename `basename $0`, dirname `dirname $0`"
echo "The present working directory is `pwd`"

QSH

bash_script
BASEDIR = /家庭/降压
美元零= / home / buck / bash_script
您运行的脚本的基本名称为bash_script,dirname / home / buck 目前的工作目录是/ home / buck

./ bash_script
BASEDIR =。
美元零=。/ bash_script
您运行的脚本的基本名称为bash_script,dirname。 目前的工作目录是/ home / buck

cd /

/家庭/降压/ bash_script
BASEDIR = /家庭/降压
美元零= / home / buck / bash_script
您运行的脚本的基本名称为bash_script,dirname / home / buck 目前的工作目录是/

cd / home / buck

/家庭/降压/ bash_script
BASEDIR = /家庭/降压
美元零= / home / buck / bash_script
您运行的脚本的基本名称为bash_script,dirname / home / buck 目前的工作目录是/ home / buck

出口

qsh cmd(bash_script)

BASEDIR = /家庭/降压
美元零= / home / buck / bash_script
您运行的脚本的基本名称为bash_script,dirname / home / buck 目前的工作目录是/ home / buck

QSH CMD(' / home / buck / bash_script')

BASEDIR = /家庭/降压
美元零= / home / buck / bash_script
您运行的脚本的基本名称为bash_script,dirname / home / buck 目前的工作目录是home / buck

QSH CMD(' ./ bash_script')

BASEDIR =。
美元零=。/ bash_script
您运行的脚本的基本名称为bash_script,dirname。 目前的工作目录是/ home / buck