eva*_*n54 5 ssh command-line bashrc home-directory
我有一个当前的 /home/user/ 目录 ~ 但我想将其更改为 /user/home/
/user/home 已经存在。
使用选项usermod不起作用,因为我无法以 root 或其他用户身份访问系统。
我正在寻求修改一些 .bashrc 文件和更改一些环境变量或类似的解决方案。我通过 ssh 登录。
我正在运行 Ubuntu 14.04。
先感谢您
不幸的是,以下解决方案不适用于我的情况:
编辑
我想我会在这里提供更多信息而不是回复评论。
目前文件夹结构比我上面的例子奇怪很多,但它的基本原理是一样的。即目前当我这样做时:
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/ 已经存在并且没有上面设置的限制。
好吧,你可以将此行添加到你的~/.profile1中:
HOME=/user/home/
Run Code Online (Sandbox Code Playgroud)
然而,这确实不是一个好主意。它可能导致的问题包括(但可能不限于):
/home/user仅当由您的用户拥有时,这才有效。如果不是,您甚至无法登录。
这仅适用于您的用户。对于其他人来说,您的主目录将是存储在/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)
无论如何,乱搞像 之类的变量都不是一个好主意$HOME,因为它通常会产生意想不到的后果。相反,一个更简洁的解决方案是确保每个新的 shell 会话都在目标目录中启动。只需将此行添加到您的~/.bashrc:
cd /user/home/
Run Code Online (Sandbox Code Playgroud)
现在,每次您登录或打开终端时,您都会发现自己处于/user/home.
1 或者~/.bash_profile如果存在的话。
2无论如何,登录到基于 Debian 的系统,例如 Ubuntu。~/.profile对于其他发行版/操作系统,您可能还需要将其添加到。请参阅此处。