更改“ PATH”环境变量的正确方法是什么?

罗德里戈

关于更改PATH环境变量(例如,在“〜/ .bashrc”中),我已经看到了一些不同的方法:

PATH=$PATH:/new/path
PATH="$PATH:/new/path"
export PATH = $PATH:/new/path
export PATH = ${PATH}:/new/path
setenv PATH $PATH:/new/path

有什么{ }用?什么时候" "需要?什么时候使用exportsetenv顺便说一句,我的Ubuntu 14.04没有用于的手动输入export,但是有一个用于的手动输入setenv为什么?

科斯

关于更改PATH环境变量(例如,在“〜/ .bashrc”中),我已经看到了一些不同的方法

其中有些是有效的设置方式$PATH,但有些不是有效的设置方式$PATH; 多数渔获物相同,有些捕捞物种类不同;

说到语法(在Bash /兼容的shell中);

  • PATH=$PATH:/new/path:可以,但是您需要转义“ / new / path”中的空格(如果有);
  • PATH="$PATH:/new/path":可以,您不需要在“ / new / path”中转义空格;
  • export PATH = $PATH:/new/path:不好,因为您不能在赋值运算符之前/之后有空格(并且您需要在“ / new / path”中转义空格);
  • export PATH = ${PATH}:/new/path与...相同export PATH = $PATH:/new/path;
  • setenv PATH $PATH:/new/pathsetenvcsh内置的;它应该与相同PATH=$PATH:/new/path;

单引号/双引号都可以防止Bash在空格上中断;单引号阻止Bash执行参数扩展,命令替换或算术扩展,从而迫使Bash从字面上解释所包含的字符串;相反,双引号不会阻止Bash执行参数扩展,命令替换或算术扩展,在第二种情况下,为了允许在上进行参数扩展,需要使用双引号$PATH

如果变量后的字符是变量名的有效字符,则必须使用大括号,但是:不需要,因此,在第四种情况下,实际上并不需要使用大括号

之间的区别说起var=valueexport var=valuesetenv var value;

  • var=value设置$var当前shell中的值分叉的shell /进程将不会继承变量或变量的值;
  • export var=value设置$var当前环境中的值分叉的shell /进程将继承变量及其值;
  • setenv PATH $PATH:/new/path与...相同export var=value;
$ foo=bar
$ bash
$ echo $foo

$ exit
exit
$ export foo=bar
$ bash
$ echo $foo
bar

顺便说一句,我的Ubuntu 14.04没有手动输入export,但是有一个手动输入setenv为什么?

如果键入man setenv,则会得到的输出man 3 setenv,这是setenv()“ Linux程序员手册”中函数的手动输入;否则,输出为如前所述,setenvUbuntu中没有命令,Bash中没有内置命令setenv,尽管其中有setenv内置命令csh

export相反,是内置的Bash,要获取有关它的信息,您必须运行help export

$ help export
export: export [-fn] [name[=value] ...] or export -p
    Set export attribute for shell variables.

    Marks each NAME for automatic export to the environment of subsequently
    executed commands.  If VALUE is supplied, assign VALUE before exporting.

    Options:
      -f    refer to shell functions
      -n    remove the export property from each NAME
      -p    display a list of all exported variables and functions

    An argument of `--' disables further option processing.

    Exit Status:
    Returns success unless an invalid option is given or NAME is invalid.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章