我怎样才能在我的 shell 中设置 '~'

我怎样才能在我的 shell 中设置 '~'

通常,~在我的 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

不同情况有不同的选择:

  1. 在 Linux 和 Cygwin 上,您可以通过设置环境变量来临时设置主目录HOME。使用以下命令执行此操作(请注意 周围没有空格=

    export HOME=/new/dir/path
    

    这只是暂时的更改,并不是每个程序都会接受它。如果您启动新会话或重新启动,设置将会更改。

  2. 在 Linux 上(至少是 Red Hat,如果 Ubuntu 有所不同我会感到非常惊讶),您可以通过运行以下命令使更改永久生效(您可能需要以 root 身份和/或在命令前加上sudo)。

    usermod -d /new/dir/path username
    

    这最好Manoj 的回答,因为该解决方案实际上只是在每次打开 Bash shell 时重复选项 1;并不是每个程序都会选择新目录。

    为了使该操作生效,您需要重新启动所有会话,或者只需重新启动计算机。

  3. 在 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是一个坏主意™。

相关内容