更改 Cygwin 的 HOME

更改 Cygwin 的 HOME

我正在嘗試更改工作電腦上 Cygwin 的主目錄。預設情況下,我們的主目錄會對應到網路共用。這似乎給 Cygwin 帶來了一些混亂,因為它在我的桌面上創建了一個目錄,該目錄遵循與網路共享相同的路徑,以及基於我打開 cygwin 的位置的其他前綴。

如果我從安裝時建立的預設捷徑開啟 Cygwin:

$ echo $HOME
/cygdrive/c/Users/shaun/Desktop/SERVER/USERS:USERS/SHAUN

如果我從 PowerShell 開啟 Cygwin:

$ echo $HOME
/usr/bin/SERVER/USERS:USERS/SHAUN

我寧願將我的主目錄放在我自己設定的用於管理程式的本機程式目錄中。像這樣:

/cygdrive/c/users/shaun/apps/cygwin/home/shaun

執行此操作的首選方法是根據 cygwin 的推薦,就是在 中進行條目/etc/nsswitch.conf。這看起來應該要這樣做:

db_home: unix /%H/Apps/cygwin/home/shaun

我對此文件所做的任何更改似乎都被忽略了。我重新啟動終端,即使我故意弄亂語法,我也沒有收到任何錯誤。我嘗試過但失敗的一些選項:

db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
db_home: /%H/Apps/cygwin/home/shaun
db_home: unix /%H/Apps/cygwin/home/shaun
db_home: cygwin desc
db_home: cygwin /path /%H/Apps/cygwin/home/shaun

每次嘗試後我都重新啟動了 Cygwin 進程。我也嘗試將db_shell選項更改為/bin/sh只是作為實驗,但 shell 沒有改變。

StackExchange 中過去的問題建議更改文件,只有在註解掉自動建立 HOME 目錄的/etc/passwd程式碼區塊後,我才能使其正常運作。/etc/profile然後,過了一段時間,它又回到了原來的家。

該文件是否有我遺漏的內容/etc/nsswitch.conf?看起來這將是一種簡單方便的設定自訂配置的方法。這些替代方案似乎是 Cygwin 不推薦的過時駭客,但如果我錯了,請讓我知道首選哪種方法。

我現在的/etc/nsswitch.conf

    # /etc/nsswitch.conf
    #
    #    This file is read once by the first process in a Cygwin process tree.
    #    To pick up changes, restart all Cygwin processes.  For a description
    #    see https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch
    #
    # Defaults:
    # passwd:   files db
    # group:    files db
    # db_enum:  cache builtin
    # db_home:  /home/%U
    db_home: /cygdrive/c/users/shaun/apps/cygwin/home/shaun
    # db_shell: /bin/bash
    # db_gecos: <empty>

答案1

db_home: unix /%H/Apps/cygwin/home/shaun

您引用的手冊頁告訴您使用unix 或者a /path,兩者不能同時存在。

除非您的 AD 管理員已unixHomeDirectory為組織中每個使用 Cygwin 的使用者設定了值,否則您根本不想使用unix,而是使用路徑。

我建議對您給予的內容進行修改:

db_home: /%H/Apps/cygwin/home/%u

這將允許該設定適用於同一台電腦上的多個使用者。

我對此文件所做的任何更改似乎都被忽略了。

有兩種方法可以覆蓋該nsswitch.conf設定:

  1. 運行 Cygwin 的mkpasswd實用程序,該實用程式會從 SAM 或 AD 使用者資訊資料庫產生/etc/passwd和。/etc/group這個機制是過時的,且只能用於舊版 Cygwin 安裝或用於特殊目的。

  2. %HOME%在 Windows 系統層級設定環境變數。

    這不僅會覆蓋 Cygwin,而且僅在某些情況下才會這樣做,這就是為什麼它是不建議

    檢查使用者和系統範圍的環境變數集,以確保它不會發生在您身上。

StackExchange 中過去的問題建議更改 /etc/passwd 文件

您應該刪除它並使用網站的 Active Directory 系統,並/etc/nsswitch.conf控制 Cygwin 與其互動的方式。

答案2

當我在使用遠端安裝的主目錄時遇到問題時,我使用了“映射網路磁碟機”功能,因此My Documents映射到磁碟機號,例如U:\。然後U:\成為 的別名My Documents。然後我進行編輯/etc/passwd,以便~指向/cygdrive/u然後一切正常。

這也可以使用本機目錄來完成,但subst必須使用該命令來cmd.exe建立別名而不是「映射網路磁碟機」。映射網路磁碟機是永久的,但subst不是,因此必須將每次啟動時執行此操作的腳本放置在 WindowsStart資料夾中。

相關內容