gcc 如何在MSYS2上更改HOME目录和启动目录?

6uxekuva  于 2022-12-19  发布在  其他
关注(0)|答案(7)|浏览(533)

我已经安装了MinGW-w 64和MSYS 2。但是我如何改变MSYS 2中的HOME目录呢?这样当我键入cd $home或cd ~时,它会转到我定义的另一个目录。
如何编写代码,使起始目录始终是.bat文件所在的目录?
在cmd中,我使用了以下代码:
%~d1张光盘“%~p1”调用命令
所以当我在桌面上打开cmd时,它会从桌面上的目录启动。
我怎样才能用msys 2做类似的事情呢?

bvjxkvbb

bvjxkvbb1#

如果您想使用Windows主文件夹作为MSYS 2的主文件夹,您可以编辑/etc/nsswitch.conf并写入:

db_home: windows
bf1o4zei

bf1o4zei2#

Msys 2将使用windows %HOME%作为它的$HOME目录。如果你在环境变量中设置%HOME%(到你需要Msys 2使用的windows目录),它将工作。

hsgswve4

hsgswve43#

我更喜欢只更新/etc/fstab@fstab

# cat /etc/fstab
# For a description of the file format, see the Users Guide
# https://cygwin.com/cygwin-ug-net/using.html#mount-table

# DO NOT REMOVE NEXT LINE. It remove cygdrive prefix from path
none / cygdrive binary,posix=0,noacl,user 0 0
##################################################################
# Canonicalize the two home directories by mounting the windows  #
# user home with the same path mapping as unix.                  #
##################################################################
none /c/Users/Edward /home/Edward binary,posix=0,noacl,user 0 0
2ledvvac

2ledvvac4#

在其中一个shell启动脚本(例如~/.bash_profile,其中~是默认/原始主目录)中,您可以更改$HOME环境变量:

export HOME=/something/else

如果你想在那个目录下打开你的shell,你可能需要在设置$HOME之后运行cd(没有参数);我还没有测试过。

yiytaume

yiytaume5#

除了以上的回答,还有一种方法是使用Windows命令mklink来创建目录符号链接,类似于Linux的ln
首先创建e:\msys\home目录,然后以管理员身份运行cmd,然后运行:

cd c:\msys64
mklink /j home e:\msys\home

不需要其它改变。
有时在特定的基础更新后,链接无效,需要在清除或重命名新生成的“home”目录后再次创建。

nqwrtyyt

nqwrtyyt6#

创建或修改MSYS2 /etc/passwd文件。下面显示了两种方法。
以下命令可以从MSYS2 shell运行,并且无论文件是否存在以及是否已包含当前用户,都可以安全地运行:

$ grep "^${USERNAME}:" /etc/passwd >/dev/null 2>&1 || mkpasswd | grep "^${USERNAME}:" >>/etc/passwd

接下来,编辑/etc/passwd,并更改相关用户的主目录字段(第6个冒号分隔的字段)。

$ vim /etc/passwd

附加功能:也可以通过编辑第一个字段来更改MSYS2用户名。
根据需要,将当前主目录内容移动到新的主目录。
注销,然后重新登录。
/etc/passwd编辑可以在没有手动编辑的情况下完成,但是这使得粘贴到MSYS2 shell的命令行更加复杂,并且,如果/etc/passwd文件已经存在并且其中已经有用户名,则它可能不起作用:

__DIR="/path/to/home"
mkpasswd | grep "^${USERNAME}:" | \
awk -v DIR="${__DIR}" -v RS=":" -v ORS="/n" \
'NR == 6 { printf(DIR ":"); next } { printf("%s", $0) } NR < 7 { printf(":") }' - >>/etc/passwd
vlurs2pr

vlurs2pr7#

我已经创建了一个批处理文件来设置HOME变量:

set HOME=C:\Users\%USERNAME%
C:\LocalApp\PortableGit\git-bash.exe

这允许我把我的.bash_profile放在这个HOME中(而不是放在执行速度非常慢的默认网络位置)。

相关问题