从任何地方运行脚本

从任何地方运行脚本

我有一个脚本:

#!/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 中,而是您没有使用它的名称来调用它。

您有两个选择:

  1. 改为输入abspath.sh
  2. 将程序重命名为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 脚本。

相关内容