从任何地方运行脚本

Che*_*tah 8 linux shell shell-scripting

我有一个脚本:

#!/bin/bash
echo "$(dirname $(readlink -e $1))/$(basename $1)"
Run Code Online (Sandbox Code Playgroud)

位于此处:/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,我做错了什么?

Mic*_*ton 30

您想键入abspath,但程序已命名abspath.sh。问题不在于它是否在 PATH 中,而在于您根本没有使用它的名称来调用它。

您有两个选择:

  1. abspath.sh改为键入。
  2. 将程序重命名为abspath.


gle*_*man 6

这段代码足够小,我可以将它编码为一个 shell 函数:

abspath() {
    echo "$(dirname "$(readlink -e "$1")")/$(basename "$1")" 
} 
Run Code Online (Sandbox Code Playgroud)

是的,您确实想要所有这些报价。