首页 > 解决方案 > 子shell中使用的“basename”返回“command not found”

问题描述

运行此脚本时:

#!/bin/sh -ex

if [[ $# -ne 1 ]]; then
  echo "./import-public-ssh-key.sh <absolute path to public key>"
  exit 1;
fi

PATH=$1
KEY=$(basename ${PATH})

我得到:

./import-public-ssh-key.sh: line 9: basename: command not found

没有子外壳的basename作品:

$ basename /Users/mles/.ssh/id_rsa.pub
id_rsa.pub

为什么basename不在子shell中工作?如果这是相关的,我在 Mac 上。

标签: bashsubshell

解决方案


您重置 PATH。不要那样做。shell 搜索 PATH 中列出的所有目录,并且您已对其进行了更改,以便 PATH 不再包含包含 basename 的目录。


推荐阅读