bash - 子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 上。
解决方案
您重置 PATH。不要那样做。shell 搜索 PATH 中列出的所有目录,并且您已对其进行了更改,以便 PATH 不再包含包含 basename 的目录。
推荐阅读
- oracle - 无法在docker中重新启动oracle数据库
- ruby-on-rails - 如何为不同的用户更改“password_archiving_count”的 Devise Security Gem 配置?
- flutter - 避免使用应用发送自动点击
- winapi - 在 Windows 中切换用户时如何保持音频播放?
- mobile - 下载 GPX 文件的链接,以便它在 mobil 上运行
- doccano - Doccano:无法上传 jsonl
- visual-studio-code - Jupyter Notebook 在 VS Code 中切换到旧界面?
- ios - 无法在 Xcode 中存档,需要配置文件
- c++ - 将相似的变量名添加到数组
- sql-server - 我可以在还原后回滚被 SQL Server 覆盖的数据吗?