对于IBMi V6R1的QShell qsh
我厌倦了Getting the source directory of a Bash script from within
的建议输出错误:
BASEDIR=$(dirname $0)
echo $BASEDIR
$ QSHELL/QZSHSH
QSHELL / QZSH不是执行脚本的位置。
请告知命令以找到执行脚本的路径。
答案 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