Bash

添加到 PATH 後無法從命令行執行文件

  • August 17, 2021

所以我有一個希望從命令行執行的函式。

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 中,我認為我不需要這樣做。我在這裡犯了什麼錯誤?

謝謝。

這裡有幾個問題。由$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已經作為一個有效的命令存在。此外,在許多 shelltest中,無論$PATH.

引用自:https://unix.stackexchange.com/questions/665065