通常,~
在我的 shell 中映射到/home/myuserid
。我怎样才能使其映射到另一个目录?
答案1
如果你确实想这么做,你可以export HOME=/directory/you/want
。
例如
~ $ export HOME=/tmp
/home/youruser $ cd ~
~ $ pwd
/tmp
但请注意,这可能会破坏一些东西,正如评论中指出的那样:任何通过$HOME
或引用你的主目录的东西~
都会被破坏。
答案2
/home/user/.bashrc
您还可以为 HOME 环境变量指定不同的路径。
export HOME=newpath
例如。
export HOME=/home/newuser
这将使更改在每个会话中永久生效,并~
始终指向另一个指定的目录。
答案3
不同情况有不同的选择:
在 Linux 和 Cygwin 上,您可以通过设置环境变量来临时设置主目录
HOME
。使用以下命令执行此操作(请注意 周围没有空格=
)export HOME=/new/dir/path
这只是暂时的更改,并不是每个程序都会接受它。如果您启动新会话或重新启动,设置将会更改。
在 Linux 上(至少是 Red Hat,如果 Ubuntu 有所不同我会感到非常惊讶),您可以通过运行以下命令使更改永久生效(您可能需要以 root 身份和/或在命令前加上
sudo
)。usermod -d /new/dir/path username
这最好Manoj 的回答,因为该解决方案实际上只是在每次打开 Bash shell 时重复选项 1;并不是每个程序都会选择新目录。
为了使该操作生效,您需要重新启动所有会话,或者只需重新启动计算机。
在 Cygwin 上,要进行永久更改,您需要在所选的文本编辑器中编辑 Cygwin
/etc/passwd
文件。(要使用 Windows 编辑器执行此操作,可能需要使用C:\cygwin\etc\passwd
,但请确保使用可以保留行尾的编辑器,因此不要使用记事本。)该文件将包含类似下面的一行:
username:unused:23456:12345:U-GRP\username,S-1-2-34-567890-123456-789012:/old/home/dir:/bin/bash
您需要更改最后一个 s 和倒数第二个
:
s 之间的位(读取/old/home/dir
上面)来指定您想要作为用户主目录的目录。再次强调,为了使其正确生效,您需要关闭所有 Cygwin 进程并重新打开它们,或者只需重新启动计算机以确保正确执行。
警告:Cygwin不上主目录名称中带有空格。它不受支持,会造成难以言喻的麻烦,当人们遇到麻烦时,Cygwin 邮件列表上的一致回复是“那就不要这样做”。具体来说,这意味着像这样的主目录/cygwin/c/Documents and Settings/username/My Documents
是一个坏主意™。