起初,我创建了一个脚本来“查找”一个文件并切换到该目录。唉,从脚本返回后,“cd”没有改变。脚本中的目录更改是该脚本的本地更改。我忘了。告我。
所以...我在 .bashrc 中间创建了与函数相同的代码。当我重新进入 Bash shell 时,该函数未定义或不可见。所以...我将函数放在 .bashrc 的末尾,然后——瞧! - 有效。这是功能:
function goto {
if [[ "$1" == "" ]]
then
echo "[ERROR] $0 requires a filename as input."
echo "[INFO] Usage: $0 <filename> finds file and changes to that directory."
else
echo "[INFO] Looking for file: $1"
declare -x -a full_filepath=$(find . -name "$1")
if [[ "${full_filepath[0]}" == "" ]]
then
echo "[ERROR] Unable to find requested file $1. Exiting..."
else
local filepath=${full_filepath[0]%/*}
local filename=${full_filepath[0]##*/}
echo "[INFO] Switching to $filepath to locate $filename..."
cd $filepath
fi
fi
}
现在问题来了。我不得不在 .bashrc 中的 SDKMan 的初始化代码之后移动它(忽略#THIS 必须在文件末尾才能使 SDKMAN 工作!!!)。毫不奇怪,“sdk”不再有效。
是否有“正确的方法”在 .bashrc 中包含一个函数,以便其他脚本(如 SDKMan)可以保留在最后,无论出于什么原因,它必须在那里......???