Bash
添加到 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.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
.