source使用的脚本是在当前shell进程下进行的,所以$0依旧是当前的b.sh。那么之前的pwd应该是当前shell进程的工作目录,这个可以理解了。在a.sh调用b.sh,a.sh没有执行任何cd dir操作,b.sh也没有,所以pwd仍然是a.sh所在目录。 source/$0/pwd相互影响 做个实验: # b.shecho`pwd`source`dirname$0`/C/c.shecho...
echo "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 用BASH_SOURCE[0]来获取当前脚本的路径。 与FUNCNAME相似的另外一个比较有用的常量是BASH_SOURCE,同样是一个数组,不过它的第一个元素是当前脚本的名称。 这在source的时候非常有用,因为在被source的脚本中,$0是父脚本的名称,而不是被sourc...
Linux dirname $0 source if $SHELL gives the full path to yourdefaultshell. $0 gives the name of yourcurrentshell. dirname是一个命令,获取指定文件的路径 dirname voctrals/test.sh 的结果是voctrals。 现在就可以解释cd `dirname $0`了。 进入所运行的shell的目录,这样一来就可以查看目录下的其它文件了...
但在linux 里 source 获得的 $0 不是文件路径而是 -bash 所以这里提供一个在source 执行的脚本里获取当前文件路径的方法 #!/usr/bin/env bash SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" check : https://stackoverflow.com/questions/59895/how-can...
=== 安装完后在桌面增加捷径的方法 === 我要做捷径的目标是/opt/sourcenav/bin/snavigator (这是个sh script) 里面要改一行 #snbindir=`dirname $0` snbindir=/opt/sourcenav/bin 这样再建一个捷径到桌面即可: ln -s /opt/sourcenav/bin/snavigator ~/Desktop/...
echo ${BASH_SOURCE[0]} source `dirname $0`/common-shell-rc.sh The source fails ($0 is zsh) and the echo outputs a blank line. Edit: apparently, for $0 to work, I need the option FUNCTION_ARGZERO option set. Any way to test if this is set in a script? (so that I can tempo...
/bin/bashexportbashpath=$(cd`dirname $0`;pwd)echo$bashpath 1. 2. 3. source 文件获取当前文件的绝对路径 #!/bin/bash# 下面是输出当前文件的绝对路径cd$(dirname$BASH_SOURCE)# echo $(pwd)/$(basename $BASH_SOURCE)temp_file=`echo$(pwd)/$(basename$BASH_SOURCE)`# 下面是输出当前执行文件的...
CUR_DIR=$(cd "$(dirname "$0")";pwd) function build(){ cd "${CUR_DIR:-}/$1" count=$(git branch -a|grep "${CI_COMMIT_REF_NAME}"|wc -l) if [ "$count" != 0 ];then maven_install fi cd "${CUR_DIR}" rm -rf "${CUR_DIR:-}/$1" ...
在jenv-init.sh中使用了下面的代码来执行autorun.sh source "${JENV_DIR}/candidates/${CANDIDATE}/current/autorun.sh" 但是使用source执行autorun.sh时,$0的值会是-bash 这样会造成一些项目的autorun.sh不能正常运行 例如maven中的autorun.sh #!/bin/sh app_dir=`dirname
For zsh, source "$(dirname "$0") just works. The steps as I understand them: ~/.zshrc calls source on a file directly: ~/.dot-files/zsh/default-config said file calls source command, yes, but it inserts "path to me" with $(dirname "$0") followed by the ...