Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)
(시리즈 글이 3개 있습니다.)
개발 환경 구성: 298. Windows 10 - bash 실행 시 시작 디렉터리 자동 변경
; https://www.sysnet.pe.kr/2/0/11046

Linux: 25. 자주 실행할 명령어 또는 초기 환경을 "~/.bashrc" 파일에 등록
; https://www.sysnet.pe.kr/2/0/12077

Linux: 59. dockerfile - docker exec로 container에 접속 시 자동으로 실행되는 코드 적용
; https://www.sysnet.pe.kr/2/0/13337




Windows 10 - bash 실행 시 시작 디렉터리 자동 변경

bash 처음 켜면 경로가 /home/[username]으로 설정되어 있는데요.

TestUser@MYPC:~$ pwd
/home/TestUser
TestUser@MYPC:~$

이걸 바꾸고 싶다는 질문이 들어와서 잠깐 찾아봤습니다. 뭐랄까, 도스(DOS) 시절 같으면 autoexec.bat에서 "cd ...[path]..." 명령어를 등록해 주면 DOS Shell 시작하자마자 특정 폴더로 이동하게 할 수 있는데... bash는 리눅스이므로 그에 따른 별도의 절차를 따르면 됩니다. 이는 다음의 문서에 잘 나와 있습니다.

Shell initialization files
; http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_01.html

위의 문서에 보면 다음의 다양한 설정 파일에 대한 소개가 나옵니다.

  • /etc/profile: 시스템 전역 설정
  • /etc/profile.d: 특정 프로그램에 대한 시스템 전역 설정
  • /etc/bashrc: Bash Shell 전용 설정 파일
  • ~/.bash_profile: 사용자 전용 설정 파일
  • ~/.bash_login: 사용자 로그인 시에만 실행되는 설정 파일
  • ~/.profile: 2개의 설정 파일(~/.bash_profile, ~/.bash_login)이 없는 경우에 적용되는 설정 파일
  • ~/.bashrc: 로그인이 없는 환경에서도 참조되는 사용자 설정 파일

ls -a 명령을 내려보면 이미 ~/.bashrc 파일과 ~/.profile이 있는 것을 볼 수 있습니다.

TestUser@MYPC:~$ ls -a
.  ..  .bash_history  .bash_logout  .bashrc  .profile
TestUser@MYPC:~$

테스트해보면 윈도우의 bash shell을 실행하면 ~/.profile은 로드되지 않고 ~/.bashrc는 로드됩니다.

아마도 ~/.profile은 해당 파일에 포함된 주석(executed by the command interpreter for login shells)에 따라 명시적으로 로그인하는 경우에만 실행되는 듯합니다. (~/.bashrc 파일은 주석에서 "executed by bash(1) for non-login shells."라고 명시하고 있습니다.)

그럼, 이제 답이 나왔군요. vi든 nano든 편집기를 이용해 .bashrc 파일의 마지막에 cd ...[경로]...를 입력해 두면 됩니다.

TestUser@MYPC:~$ nano .bashrc
TestUser@MYPC:~$ cat .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

...[생략]...

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

cd /mnt/c/temp

이후 bash shell을 시작하면 폴더가 윈도우의 "c:\temp"에 해당하는 경로로 시작합니다.

TestUser@MYPC:/mnt/c/temp$ pwd
/mnt/c/temp
TestUser@MYPC:/mnt/c/temp$




참고로, cmd.exe에서 bash를 실행하는 경우 0x80070002 오류가 발생하면서 실행이 안되는 경우가 있습니다.

c:>bash
Error: 0x80070002

다음의 글을 보시면 해답이 나오는데요.

Problems reinstalling Bash on Ubuntu on Windows Error: 0x80070002 
; http://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_install/problems-reinstalling-bash-on-ubuntu-on-windows/bb32e0a5-e711-410b-b28b-ebc561d5b4d8?auth=1

제 경우에는 위의 글에서 소개하는 첫 번째 방법인 "Use legacy console" 옵션은 통하지 않았습니다. 대신 관리자 콘솔을 띄운 후 다음과 같이 "lxrun"을 이용해 "Windows Subsystem for Linux"를 재설치하는 것으로 해결되었습니다.

lxrun /uninstall /full
lxrun /install /y




Bash Shell을 실행했는데 사용자 폴더가 다음과 같이 root로 되는 경우가 있습니다.

root@MYPC:~# pwd
/root
root@MYPC:~#

이건, bash shell을 처음 실행 시 기본 사용자 설정을 하지 않았거나, 또는 lxrun을 이용해 "Windows Subsystem for Linux"를 설치한 경우 그렇게 됩니다.

괜찮습니다. ^^ 다음의 글에 따라,

How to Change Your User Account in Windows 10’s Ubuntu Bash Shell
; http://www.howtogeek.com/261417/how-to-change-your-user-account-in-windows-10s-ubuntu-bash-shell/

cmd.exe 창을 띄워 기본 사용자를 설정하거나,

C:\>lxrun /setdefaultuser TestUser
새 UNIX 암호 입력:
새 UNIX 암호 재입력:
passwd: password updated successfully
Default UNIX user set to: TestUser

다시 root 사용자 계정으로 설정할 수도 있습니다.

C:\>lxrun /setdefaultuser root
Found UNIX user: root
Default UNIX user set to: root

현재 사용자의 암호를 변경하고 싶다면 bash shell 내에서 passwd 명령어로 가능합니다.

TestUser@MYPC:~$ passwd
TestUser에 대한 암호 변경 중
(현재) UNIX 암호:
새 UNIX 암호 입력:
새 UNIX 암호 재입력:
passwd: password updated successfully
TestUser@MYPC:~$

마지막으로 bash shell 내에서 사용자 인증을 변경하고 싶다면 "su [username]" 명령을 사용하면 됩니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 10/4/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 16  17  18  19  20  21  22  23  24  25  26  [27]  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
13262정성태2/15/202313493디버깅 기술: 191. dnSpy를 이용한 (소스 코드가 없는) 닷넷 응용 프로그램 디버깅 방법 [1]
13261정성태2/15/202312970Windows: 224. Visual Studio - 영문 폰트가 Fullwidth Latin Character로 바뀌는 문제
13260정성태2/14/202312214오류 유형: 847. ilasm.exe 컴파일 오류 - error : syntax error at token '-' in ... -inf
13259정성태2/14/202312167.NET Framework: 2095. C# - .NET5부터 도입된 CollectionsMarshal
13258정성태2/13/202312927오류 유형: 846. .NET Framework 4.8 Developer Pack 설치 실패 - 0x81f40001
13257정성태2/13/202312343.NET Framework: 2094. C# - Job에 Process 포함하는 방법 [1]파일 다운로드1
13256정성태2/10/202312468개발 환경 구성: 665. WSL 2의 네트워크 통신 방법 - 두 번째 이야기
13255정성태2/10/202312689오류 유형: 845. gihub - windows2022 이미지에서 .NET Framework 4.5.2 미만의 프로젝트에 대한 빌드 오류
13254정성태2/10/202312571Windows: 223. (WMI 쿼리를 위한) PowerShell 문자열 escape 처리
13253정성태2/9/202313710Windows: 222. C# - 다른 윈도우 프로그램이 실행되었음을 인식하는 방법파일 다운로드1
13252정성태2/9/202311605오류 유형: 844. ssh로 명령어 수행 시 멈춤 현상
13251정성태2/8/202312190스크립트: 44. 파이썬의 3가지 스레드 ID
13250정성태2/8/202313777오류 유형: 843. System.InvalidOperationException - Unable to configure HTTPS endpoint
13249정성태2/7/202314390오류 유형: 842. 리눅스 - You must wait longer to change your password
13248정성태2/7/202311052오류 유형: 841. 리눅스 - [사용자 계정] is not in the sudoers file. This incident will be reported.
13247정성태2/7/202312613VS.NET IDE: 180. Visual Studio - 닷넷 소스 코드 디버깅 중 "Decompile source code"가 동작하는 않는 문제
13246정성태2/6/202312438개발 환경 구성: 664. Hyper-V에 설치한 리눅스 VM의 VHD 크기 늘리는 방법 - 두 번째 이야기
13245정성태2/6/202312979.NET Framework: 2093. C# - PKCS#8 PEM 파일을 이용한 RSA 개인키/공개키 설정 방법파일 다운로드1
13244정성태2/5/202312092VS.NET IDE: 179. Visual Studio - External Tools에 Shell 내장 명령어 등록
13243정성태2/5/202313231디버깅 기술: 190. windbg - Win32 API 호출 시점에 BP 거는 방법 [1]
13242정성태2/4/202312079디버깅 기술: 189. ASP.NET Web Application (.NET Framework) 프로젝트의 숨겨진 예외 - System.UnauthorizedAccessException
13241정성태2/3/202310662디버깅 기술: 188. ASP.NET Web Application (.NET Framework) 프로젝트의 숨겨진 예외 - System.IO.FileNotFoundException
13240정성태2/1/202311339디버깅 기술: 187. ASP.NET Web Application (.NET Framework) 프로젝트의 숨겨진 예외 - System.Web.HttpException
13239정성태2/1/202310701디버깅 기술: 186. C# - CacheDependency의 숨겨진 예외 - System.Web.HttpException
13238정성태1/31/202315000.NET Framework: 2092. IIS 웹 사이트를 TLS 1.2 또는 TLS 1.3 프로토콜로만 운영하는 방법
13237정성태1/30/202314295.NET Framework: 2091. C# - 웹 사이트가 어떤 버전의 TLS/SSL을 지원하는지 확인하는 방법
... 16  17  18  19  20  21  22  23  24  25  26  [27]  28  29  30  ...