การตั้งค่า $ HOME ใน PowerShell


29

ฉันจะเปลี่ยนโฮมไดเร็กตอรี่เริ่มต้นของฉันเป็น "C: \ Users \ khornsby" ทุกครั้งที่ฉันเปิด PowerShell ได้อย่างไร

ฉันใช้ Windows 7 ด้านล่างเป็นข้อมูลเกี่ยวกับสถานะของสภาพแวดล้อมของฉัน

Windows PowerShell
ลิขสิทธิ์ (C) 2009 Microsoft Corporation สงวนลิขสิทธิ์.

PS P: \> cd ~
PS P: \>echo $HOME
P: \
PS P: \> HOME="C:\Users\khornsby"
คำว่า 'HOME = C: \ Users \ khornsby' ไม่รู้จักเป็นชื่อของ cmdlet
ฟังก์ชันไฟล์สคริปต์หรือโปรแกรมที่ทำงานได้ ตรวจสอบการสะกดชื่อหรือ
หากมีการรวมเส้นทางตรวจสอบว่าเส้นทางนั้นถูกต้องแล้วลองอีกครั้ง
ที่บรรทัด: 1 ตัวอักษร: 25
+ HOME = "C: \ Users \ khornsby" 

PS P: \> Set-Variable HOME "C:\Users\khornsby"
ตั้งค่าตัวแปร: ไม่สามารถเขียนทับตัวแปร HOME ได้เนื่องจากเป็นแบบอ่านอย่างเดียวหรือ
คงที่
ที่บรรทัด: 1 อักขระ: 13
+ ตั้งค่าตัวแปร 

PS P: \> dir env:home*

ค่าชื่อ
---- -----
โฮม \
บ้านเกิด P:
HOMESHARE \\ fileserv \ khornsby $


PS P: \>

2
รูปแบบการโพสต์ของคุณเป็นอย่างไร ฉันชอบวิธีที่สิ่งที่คุณพิมพ์ถูกเน้นไว้
Jay Bazuzi

3
ฉันใช้<kbd>แท็ก
kzh

คำตอบ:


27

ตัวแปรจะอ่านได้ตามค่าเริ่มต้นเท่านั้น แต่สามารถลบออกได้โดยใช้-Forceสวิตช์เพื่อลบตัวแปร ในการเปลี่ยนแปลงแบบถาวรในเซสชันต่างๆคุณสามารถสร้างไฟล์โปรไฟล์ที่เหมือน.bashrc(สำหรับ bash บน Linux) ยกเว้น Powershell

ในไดเรกทอรีเอกสารของคุณ (โดยปกติC:\Users\YOUR_USERNAME_HERE\documents) สำหรับบัญชีผู้ใช้ของคุณให้สร้างโฟลเดอร์WindowsPowerShell (ตั้งชื่อแบบนี้) ถ้าไม่มีอยู่ ภายในโฟลเดอร์ให้สร้างไฟล์ข้อความชื่อprofile.ps1 ( ตรวจสอบให้แน่ใจว่าไม่ใช่ไฟล์ profile.ps1.txt )

ภายในไฟล์วางสิ่งที่คุณต้องการดำเนินการเมื่อคุณเปิด Powershell

ตัวอย่าง:

Write-Host "Hi John, welcome back!"
Remove-Variable -Force HOME
Set-Variable HOME "C:\Users\khornsby"

ผล:

ข้อความแสดงแทน


1
นอกจากนี้คุณยังสามารถเรียกใช้สคริปต์เมื่อเริ่มต้นจากทางลัดโดยชี้ไปที่: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy bypass -File C:\foo\profile.ps1
Paradroid

1
ฉันลองสิ่งนี้และเปลี่ยนมูลค่าเป็น $ HOME ได้สำเร็จ แต่ "cd ~" ยังคงสลับหัวชนฝาไปยังตำแหน่งเดิม
Weeble

2
@ เห็นด้วยดูคำตอบของฉันเพื่อเอาชนะทางลัด ~
ulty4life

9

ในการแก้ไขข้อกังวลของ @Weeble เกี่ยวกับ~ทางลัด:

$HOMEDRIVE = "C:\"
$HOMEPATH = "Users\" + $env:username

# Set and force overwrite of the $HOME variable
Set-Variable HOME "$HOMEDRIVE$HOMEPATH" -Force

# Set the "~" shortcut value for the FileSystem provider
(get-psprovider 'FileSystem').Home = $HOMEDRIVE + $HOMEPATH

ดูที่นี่สำหรับความแตกต่างระหว่าง ~ และ $ HOME


1
มันคุ้มค่าเพิ่มcd $HOMEในตอนท้ายเพื่อให้เปลือกจะเริ่มในสถานที่และจะได้รับการตั้งค่าทั้งหมดสำหรับการใช้งาน :)
Eliran มาลกา

5

ง่ายยิ่งขึ้น ... เปิดการตั้งค่าระบบขั้นสูง ...

 C:\> systempropertiesadvanced

เพิ่มตัวแปรระบบใหม่ชื่อ HOME พร้อมเส้นทางไปยังโปรไฟล์ของคุณ

ป้อนคำอธิบายรูปภาพที่นี่

รีสตาร์ท explorer หรือออกจากระบบและกลับมา ...

PS C:\> $Env:home 
--- 

3
สิ่งนี้ไม่ได้ทำในสิ่งที่คำถามถาม สิ่งนี้ตั้งค่าตัวแปรสภาพแวดล้อม $ env: HOME ไม่ใช่ตัวแปร Powershell $ HOME ตัวแปร Powershell $ HOME ดูเหมือนจะได้มาจากตัวแปรสภาพแวดล้อม $ env: HOMEDRIVE และ $ env: HOMEPATH ในเวลาที่กระบวนการ Powershell เริ่มต้นขึ้น มันคือ $ HOME ที่กำหนดพฤติกรรมของ "cd ~"
Weeble

2
ขออภัยคำสั่งสุดท้ายนั้นไม่เป็นความจริง $ HOME และพฤติกรรมของ "cd ~" ทั้งคู่ดูเหมือนจะตรงกับค่าของตัวแปรสภาพแวดล้อม HOMEDRIVE และ HOMEPATH เมื่อกระบวนการ Powershell เริ่มต้นขึ้น หลังจากนั้นการเปลี่ยนแปลงตัวแปร / สภาพแวดล้อมใด ๆ เหล่านี้ดูเหมือนจะไม่มีผลกับไดเรกทอรีที่เลือกโดย "cd ~"
Weeble

ทำงานได้ดีสำหรับฉัน .... ฉันไม่รู้ว่าคุณกำลังทำอะไรที่แตกต่าง
Eddie B

3

หากต้องการเปลี่ยนจากภายใน Windows ลองทำสิ่งต่อไปนี้:

  • ปักหมุด PowerShell ไปที่แถบงาน

  • คลิกขวาที่ไอคอน PowerShell บนทาสก์บาร์

  • คลิกขวาที่ 'Windows PowerShell' และเลือก 'คุณสมบัติ'

  • ภายในหน้าต่าง 'คุณสมบัติ' ไปที่แท็บ 'ทางลัด' และเปลี่ยนฟิลด์ 'เริ่มต้นใน:' เป็นไดเรกทอรีเริ่มต้นที่คุณต้องการ (ตัวอย่าง: )C:\Users\username\Desktop

  • คลิก 'ตกลง'

  • เรียกใช้ PowerShell จากทาสก์บาร์

    ทาสก์บาร์

    หน้าต่างคุณสมบัติ


ไม่ทำงานเมื่อเลือก 'run as administrator'
devi

2

คุณสามารถใช้help about_profilesเพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้ อย่าลืมลงชื่อสคริปต์ของคุณ


3
helpจากแอปพลิเคชันใด
kzh

@kzh: PowerShell
Paradroid
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.