如何更改我的主目录?

eva*_*n54 5 ssh command-line bashrc home-directory

我有一个当前的 /home/user/ 目录 ~ 但我想将其更改为 /user/home/

/user/home 已经存在。

使用选项usermod不起作用,因为我无法以 root 或其他用户身份访问系统。

我正在寻求修改一些 .bashrc 文件和更改一些环境变量或类似的解决方案。我通过 ssh 登录。

我正在运行 Ubuntu 14.04。

先感谢您

不幸的是,以下解决方案不适用于我的情况:

如何更改我自己的主目录?

如何更改我的默认主目录

/sf/ask/1455847361/

编辑

我想我会在这里提供更多信息而不是回复评论。

目前文件夹结构比我上面的例子奇怪很多,但它的基本原理是一样的。即目前当我这样做时:

user@local:~$ ssh user@host
Run Code Online (Sandbox Code Playgroud)

我最终在:

user@host:~$ 
user@host:~$ pwd
/path/of/current/home/
Run Code Online (Sandbox Code Playgroud)

所以当我使用标签之类pip--user东西时,它会在本地安装东西。

因为有一些内存限制以及ssh写入该位置的问题(一段时间后我无法再写入),我希望有以下行为:

user@local:~$ ssh user@host
user@host:~$ 
user@host:~$ pwd
/path/of/new/home/
Run Code Online (Sandbox Code Playgroud)

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

ter*_*don 3

好吧,你可以将此行添加到你的~/.profile1中:

HOME=/user/home/
Run Code Online (Sandbox Code Playgroud)

然而,这确实不是一个好主意。它可能导致的问题包括(但可能不限于):

  1. /home/user仅当由您的用户拥有时,这才有效。如果不是,您甚至无法登录。

  2. 这仅适用于您的用户。对于其他人来说,您的主目录将是存储在/etc/passwd. 这意味着,例如,cd ~user将会失败。换句话说,如果我登录bob并在 中bob包含该行,则认为他的主目录是但没有其他人知道:HOME=/home/bob/foo~/.profilebob/home/bob/foo

     $ whoami
     bob
     $ echo $HOME
     /home/bob/foo
     $ cd ## this moves to your $HOME
     $ pwd
     /home/bob/foo
    
    Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。但:

    $ whoami
    terdon
    $ cd ~bob
    $ pwd
    /home/bob
Run Code Online (Sandbox Code Playgroud)
  1. 这会让你的系统管理员发疯。您不想激怒您的系统管理员,因为您很脆,而且搭配番茄酱味道很好。

无论如何,乱搞像 之类的变量都不是一个好主意$HOME,因为它通常会产生意想不到的后果。相反,一个更简洁的解决方案是确保每个新的 shell 会话都在目标目录中启动。只需将此行添加到您的~/.bashrc

cd /user/home/
Run Code Online (Sandbox Code Playgroud)

现在,每次您登录打开终端时,您都会发现自己处于/user/home.


1 或者~/.bash_profile如果存在的话。

2无论如何,登录到基于 Debian 的系统,例如 Ubuntu。~/.profile对于其他发行版/操作系统,您可能还需要将其添加到。请参阅此处