我有一个脚本:
#!/bin/bash
echo "$(dirname $(readlink -e $1))/$(basename $1)"
位于此处:/home/myuser/bin/abspath.sh
具有执行权限。
如果我运行,echo $PATH
我会得到以下结果:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myuser/bin
我希望能够从任何目录调用abspath <some_path_here>
我的脚本,并且脚本也会调用我。我正在使用 bash,我做错了什么?
答案1
您想输入abspath
,但程序名为abspath.sh
。问题不在于它是否在 PATH 中,而是您没有使用它的名称来调用它。
您有两个选择:
- 改为输入
abspath.sh
。 - 将程序重命名为
abspath
。
答案2
这段代码足够小,我可以将其编码为一个 shell 函数:
abspath() {
echo "$(dirname "$(readlink -e "$1")")/$(basename "$1")"
}
是的,您确实想要所有这些引文。
答案3
通过在 .bashrc 文件中添加命令来设置别名。
alias abspath='sh /home/myuser/bin/abspath.sh'
并且不要忘记获取文件。
答案4
第三个选项是创建一个名为 abspath 的别名,指向你的 abspath.sh 脚本。