子shell中使用的“ basename”返回“找不到命令”

时间:2018-12-29 16:39:19

标签: bash subshell

运行此脚本时:

#!/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。

1 个答案:

答案 0 :(得分:1)

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