A T*_*A T 5 linux bash environment-variables bashrc escape-characters
给定目录:/media/foo/can haz/bar
,我尝试使用以下命令编辑bash.rc:
export Foo=/media/foo/can haz/bar
export Foo=/media/foo/can\ haz/bar
export Foo='/media/foo/can haz/bar'
export Foo="/media/foo/can haz/bar"
export Foo='"/media/foo/can haz/bar"'
export Foo="'/media/foo/can haz/bar'"
Run Code Online (Sandbox Code Playgroud)
但每次,我都无法得到类似以下内容的工作(不使用"$Foo"
):
cd $Foo
Run Code Online (Sandbox Code Playgroud)
如何在 Linux 系统上设置带有空格的环境变量?
问题不在于您的环境变量包含空格。你忘记引用你的论点:
cd "$Foo"
Run Code Online (Sandbox Code Playgroud)
如果您不引用$Foo
,该cd
命令实际上会看到两个(或更多)参数,因为默认情况下空格分隔参数。在您的特定情况下,您将分别传递/media/foo/can
和传递haz/bar
,因为外壳将它们在空间中分开。双引号变量是一个养成的好习惯,并且会在很多涉及空格的情况下为您节省。
如果您想要一种不带引号的非常丑陋的方式来实现这一点,请cd
像这样覆盖您的内置函数:
cd() { builtin cd "$*"; }
Run Code Online (Sandbox Code Playgroud)
如果路径包含空格,这将起作用,因为$*
它将包含由第一个 IFS 字符(通常是空格)分隔的单个参数(/media/foo/can
和haz/bar
),然后您将它们与双引号粘在一起。
但是,像这样覆盖内置函数从来都不是一个好主意。
归档时间: |
|
查看次数: |
12333 次 |
最近记录: |