そのため、コマンドラインで実行したい機能があります。
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.sh
とbash: 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