从任何地方运行脚本

我有一个脚本:

#!/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,我做错了什么?

你想inputabspath ,但程序名为abspath.sh 。 问题不在于它是否在PATH中,而是因为你根本不使用它的名字来调用它。

你有两个select:

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

这段代码足够小,我将它作为一个shell函数进行编码:

 abspath() { echo "$(dirname "$(readlink -e "$1")")/$(basename "$1")" } 

是的,你确实需要所有的报价。

通过在.bashrc文件中添加您的命令来设置一个别名。

 alias abspath='sh /home/myuser/bin/abspath.sh' 

并且不要忘记来源文件。

我会重命名你的bash脚本abspath然后将其移动到bin目录。 那么你将无法从任何地方拨打abspath

第三个选项是创build一个名为abspath的别名,指向您的abspath.sh脚本。