PATHに追加した後、コマンドラインからファイルを実行することはできません。

PATHに追加した後、コマンドラインからファイルを実行することはできません。

そのため、コマンドラインで実行したい機能があります。

cat foo.sh

#!/bin/bash
echo foobar

これをPATH変数としてエクスポートし、別のディレクトリに変更しました。

export PATH=${PATH}:/home/usr/scripts/foo.sh

mkdir test && cd test
sh foo.sh
sh: foo.sh: No such file or directory

このように実行するfoo.shbash: foo.sh: command not found

絶対パスを使用して実行できますが、$PATHに追加してもそうする必要はありません。私はここで何を間違えましたか?

ありがとうございます。

ベストアンサー1

これにはいくつかの問題があります。$PATHファイルではなく、コロンで区切られたディレクトリで構成されます。スクリプトをbashスクリプトとして宣言し、それを使用してsh実行しないでください。通常、標準ユーティリティのように呼び出すファイルには拡張子がありません。 (とにかく拡張はオプションです。)

# Create a directory
mkdir -p "$HOME/bin"

# Create a script in that directory
cat <<'EOF' >"$HOME/bin/myscript"    # Don't use "test" :-O
#!/bin/bash
echo This is myscript
EOF

# Make it executable
chmod a+x "$HOME/bin/myscript"

# Add the directory to the PATH
export PATH="$PATH:$HOME/bin"

# Now run the script as if it's a normal command
myscript

名前付きスクリプトを使用しないように注意することは、testそのスクリプトが/bin/testすでに有効なコマンドとして存在することです。また、多くのシェルにはtest$PATH

おすすめ記事