我目前有一个 /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
带有--user
标签它将在本地安装东西。
因为存在一些内存限制以及ssh
写入该位置的问题(一段时间后我无法再写入)我希望有以下行为:
user@local:~$ ssh user@host
user@host:~$
user@host:~$ pwd
/path/of/new/home/
/path/of/new/home/
已经存在并且没有上面设置的限制。
答案1
好吧,您只需将这一行添加到您的~/.profile
1中:
HOME=/user/home/
然而,这真的不是一个好主意。它可能导致的问题包括(但可能不限于):
仅当您的用户拥有它时,该功能才有效
/home/user
。如果不是,您甚至无法登录。这只适用于您的用户。对于其他所有用户,您的主目录将是存储在 中的任何内容
/etc/passwd
。这意味着,例如,cd ~user
将失败。换句话说,如果我以 身份登录bob
并在 中bob
有行,则认为他的主目录是,但其他人都不知道:HOME=/home/bob/foo
~/.profile
bob
/home/bob/foo
$ whoami bob $ echo $HOME /home/bob/foo $ cd ## this moves to your $HOME $ pwd /home/bob/foo
到目前为止一切顺利。但是:
$ whoami
terdon
$ cd ~bob
$ pwd
/home/bob
- 这会让你的系统管理员抓狂。你不会想惹怒你的系统管理员,因为你很脆,加番茄酱吃起来很美味。
无论如何,乱用诸如 之类的变量通常不是一个好主意$HOME
,因为它经常会产生意想不到的后果。相反,一个更干净的解决方案是确保每个新的 shell 会话都在目标目录中启动。只需将此行添加到~/.bashrc
:
cd /user/home/
现在,每次您登录2或打开终端时,您都会发现自己处于/user/home
。
1 或者~/.bash_profile
如果它存在。
2无论如何,登录基于 Debian 的系统,如 Ubuntu。对于其他发行版/操作系统,您可能也需要将其添加到。请~/.profile
参阅这里。