web-dev-qa-db-ja.com

どこからでもスクリプトを実行

私はスクリプトを持っています:

#!/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を使用していますが、何を間違っていますか?

8
Cheetah

abspathと入力したいのですが、プログラムの名前はabspath.sh。問題は、それがPATHにあるかどうかではなく、単にその名前を使用して呼び出していないという事実です。

次の2つのオプションがあります。

  1. タイプabspath.sh代わりに。
  2. プログラムの名前をabspathに変更します。
30
Michael Hampton

このコードは小さいので、シェル関数としてコーディングします。

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

そしてはい、あなたはそれらすべての引用符が欲しいのです。

6
glenn jackman

.bashrcファイルにコマンドを追加して、エイリアスを設定します。

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

そして、ファイルを調達することを忘れないでください。

4

Bashスクリプトの名前をabspathに変更してから、binディレクトリに移動します。その後、どこからでもabspathを呼び出すことができます

2
Harvey

3番目のオプションは、abspath.shスクリプトを指すabspathと呼ばれるエイリアスを作成することです。

0
tokamak