bash 脚本可以添加到 zsh 的上下文中吗?

bash 脚本可以添加到 zsh 的上下文中吗?

我最近从 bash 迁移到 zsh。

我曾经使用以下token_refresh.sh脚本来ssh-add获取会话的私钥:

#!/usr/bin/env bash
echo "configuring ssh access.."
eval "$(ssh-agent -s)"
ssh-add ./my-key

但是,我无法直接从 dir /ssh 中的 zsh 运行此命令:

$ ls
my-key  my-key.pub  token_refresh.sh
$ . token_refresh.sh
.: no such file or directory: token_refresh.sh

我可以使用运行 bash 脚本

bash token_refresh.sh

但是,这不是启动 bash 会话(ssh-addbash 会话的关键),然后退出。

如何在 bash 和 zsh 中可移植地运行此脚本?

答案1

当您获取文件时请提及路径:

. ./token_refesh.sh

这在默认情况下 dot 命令不查找当前目录的 shell 中是必需的。

由于该脚本是“点脚本”(旨在获取源代码),因此您可以#!从中删除 - 行。该行没有任何效果,并且将始终被解释为注释。

也可以看看:

相关内容