错误与简单的shell脚本
我写了自动设置环境错误与简单的shell脚本
#!/bin/sh
set path=(/dv/project/ $path)
我改变由
chmod +x init.sh
执行位当我运行它
./init.sh
shell脚本它促使我与错误
./init.sh: line 3: syntax error near unexpected token `('
./init.sh: line 3: `set path=(/dv/project/ $path)'
这里有什么问题?谢谢!
如果不需要使用set
,只是试试这个:
#!/bin/bash
path=(/dv/project/ $path)
正如我已经注意到了,你想扩展您的$PATH
环境变量,对不对?有一个更好的办法。尝试this approach:
# Extend $PATH without duplicates
function _extend_path() {
if ! $(echo "$PATH" | tr ":" "\n" | grep -qx "$1") ; then
PATH="$1:$PATH"
fi
}
# Add custom bin to $PATH
[ -d ~/.bin ] && _extend_path "$HOME/.bin"
这比效率低得多。 '_extend_path(){[[$ PATH =〜(^ | :)“$ 1”(:| $)]] || PATH + = “:$ 1”; }' - 一个复合命令,没有子壳。 –
另外,'path =(/ dv/project/$ path)'是数组语法,它根本不适用于'/ bin/sh'。想必你想'#!/ bin/bash'? –
此外,'function'关键字不是POSIX sh标准的一部分,所以这也是一个可移植性错误;在POSIX sh中,它只是'extend_path(){'没有'function'来定义一个函数。虽然我通常喜欢bash扩展(当与'#!/ bin/bash' shebang一起使用时),这对于便携式替代品没有任何价值。 –
'set path ='?这是什么语法?它应该做什么?你在哪看到使你认为有效的文件? –
@CharlesDuffy'set'是一个有效的命令,据我所知。它用于设置环境选项。 – denysdovhan
@denysdovhan,它用于设置** flags **和修改命令行参数列表。 OP没有做。 'set-path = foo'将是有效的(将'$ 1'设置为'“path = foo”'),但这不是给定的。 –