如何更改我的主目录?

我目前有一个位于/home/user/的目录,但我想将其更改为/user/home/。

/user/home已经存在。

使用usermod选项不可行,因为我没有以root或其他用户身份访问系统的权限。

我希望得到一种解决方案,类似于修改某个.bashrc文件并更改某些环境变量之类的方法。我通过ssh登录。

我正在运行Ubuntu 14.04。

提前感谢您的帮助。

以下解决方案对我的情况不适用:

如何更改自己的主目录?

如何更改默认主目录?

https://stackoverflow.com/questions/20797819/command-to-change-the-default-home-directory-of-a-user

编辑

我想在这里提供一些更多的信息,而不是回复评论。

目前文件夹结构比我上面的示例要奇怪得多,但基本情况是相同的。也就是说,当前当我执行以下操作时:

user@local:~$ ssh user@host

我最终来到:
user@host:~$ 
user@host:~$ pwd
/path/of/current/home/

所以,当我使用像pip with the --user tag这样的东西时,它会在本地安装。
由于存在一些内存限制以及在该位置写入的ssh问题(经过一段时间后,我将无法再写入),因此我希望具有以下行为:
user@local:~$ ssh user@host
user@host:~$ 
user@host:~$ pwd
/path/of/new/home/

/path/of/new/home/已经存在,并且没有上述设置的限制。


我在问题中添加了一些额外的信息,希望能解决您的疑虑。如果您还有问题,请告诉我。 - evan54
1感谢您编辑原始问题,而不是将所有内容放在评论中。Ubuntu(以及Linux一般)遵循严格的指南,规定用户数据(和用户特定软件)的存放位置必须在/home/[userID]/...文件夹内。如果问题是磁盘空间,您应该考虑将/home/或某些子文件夹移动到新的分区。提示:分区可以挂载为任何(子)文件夹。请参阅将主文件夹移动到新分区 - user68186
如果我只是简单地改变了$HOME环境变量,你知道会发生什么吗? - evan54
我不知道那会不会起作用。 - user68186
所以我尝试了设置它,看起来似乎有效。我尝试了三个潜在的位置:.login.bashrc.profile,只有在.profile中它起作用。我添加的那一行是export HOME=/path/of/new/home/,但我不确定这是否就是我需要做的全部,或者是否还会影响其他东西。 - evan54
我在这里发布了一个跟进:http://stackoverflow.com/questions/27586518/what-will-happen-if-i-export-my-home-variable-upon-login - evan54
我觉得跟进更适合在[unix.se]或[su]上而不是[so]上进行。 - muru
你知道我如何移动这个问题,除了明显的复制粘贴之外吗? - evan54
发布在Unix & Linux上的问题:如果我在登录时导出我的HOME变量会发生什么? - evan54
最简单的方法肯定是请拥有您系统根访问权限的人为您运行usermod命令。其他所有方法都是可能有效也可能无效的变通办法。 - raj
1个回答

嗯,你可以将这一行代码添加到你的~/.profile1中。
HOME=/user/home/

然而,那真的不是一个好主意。它可能会引起的问题包括(但不限于):
  • 只有当/home/user归您所有时,这个方法才有效。如果不是您的所有权,甚至无法登录。

  • 这个方法只适用于您自己的用户。对于其他人来说,您的主目录将取决于存储在/etc/passwd中的内容。这意味着,例如cd ~user将失败。换句话说,假设我以bob的身份登录,并且bob~/.profile中有一行HOME=/home/bob/foo,那么bob认为他的主目录是/home/bob/foo,但其他人并不知道:

     $ whoami
     bob
     $ echo $HOME
     /home/bob/foo
     $ cd ## 这会切换到您的$HOME
     $ pwd
     /home/bob/foo
    
  • 到目前为止还不错。但是:
        $ whoami
        terdon
        $ cd ~bob
        $ pwd
        /home/bob
    

    这会让你的系统管理员发疯。你不想惹恼你的系统管理员,因为你很脆,配番茄酱味道好。
    无论如何,搞乱像$HOME这样的变量通常都不是一个好主意,因为它往往会产生意想不到的后果。相反,一个更清晰的解决方案是确保每个新的shell会话都在目标目录中启动。只需将以下行添加到你的~/.bashrc文件中即可:
    cd /user/home/
    

    现在,每次您登录或打开终端时,您将发现自己位于“/用户/主页”。

    1 或者如果存在的话,使用~/.bash_profile

    2 无论如何,登录到基于Debian的系统,比如Ubuntu。对于其他发行版/操作系统,你可能还需要将其添加到~/.profile中。请参见这里