当前位置:  开发笔记 > 编程语言 > 正文

在shell脚本中将脚本目录更改为用户的homedir

如何解决《在shell脚本中将脚本目录更改为用户的homedir》经验,为你挑选了2个好方法。

在我的bash脚本中,我需要将当前目录更改为用户的主目录.

如果我想更改为用户的foo home目录,我可以从命令行执行:

cd ~foo

哪个工作正常,但是当我从脚本中做同样的事情时它会告诉我:

./bar.sh: line 4: cd: ~foo: No such file or directory

像这样的接缝会是如此微不足道的事情,但它不起作用.这有什么问题?我是否需要逃避"〜"或可能缺少引号或其他内容?

编辑

当我说用户时,我不是指当前运行脚本的用户,而是通常系统上的任何其他用户

编辑

这是脚本:

#!/bin/bash

user="foo"
cd ~$user

如果用户名是硬编码的

cd ~foo

它可以工作,但如果它在用户变量中,那么它不会.我在这里错过了什么?



1> Johannes Wei..:

关于什么

cd $(getent passwd foo | cut -d: -f6)

USER=foo
eval cd ~$USER

也工作(foo是用户名)



2> Sean Bright..:

将其更改为:

cd $HOME

实际上,我不确定为什么cd ~whatever不起作用.我刚用一个小脚本测试过它运行正常:

#!/bin/bash

cd ~sbright

实际上,当系统上不存在指定的用户时,我会收到相同的错误消息.您确定(并且是的,我知道这是其中一个插入的问题)用户是否存在并且指定了有效的主目录?

编辑:

现在,我看到你实际在做什么...在变量插值之前发生了波浪扩展,这就是你得到这个错误的原因.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有