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

비밀번호

댓글 작성자
 




... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...
NoWriterDateCnt.TitleFile(s)
12153정성태2/23/202024338.NET Framework: 898. Trampoline을 이용한 후킹의 한계파일 다운로드1
12152정성태2/23/202021371.NET Framework: 897. 실행 시에 메서드 가로채기 - CLR Injection: Runtime Method Replacer 개선 - 세 번째 이야기(Trampoline 후킹)파일 다운로드1
12151정성태2/22/202024021.NET Framework: 896. C# - Win32 API를 Trampoline 기법을 이용해 C# 메서드로 가로채는 방법 - 두 번째 이야기 (원본 함수 호출)파일 다운로드1
12150정성태2/21/202024097.NET Framework: 895. C# - Win32 API를 Trampoline 기법을 이용해 C# 메서드로 가로채는 방법 [1]파일 다운로드1
12149정성태2/20/202021003.NET Framework: 894. eBEST C# XingAPI 래퍼 - 연속 조회 처리 방법 [1]
12148정성태2/19/202025644디버깅 기술: 163. x64 환경에서 구현하는 다양한 Trampoline 기법 [1]
12147정성태2/19/202020978디버깅 기술: 162. x86/x64의 기계어 코드 최대 길이
12146정성태2/18/202022186.NET Framework: 893. eBEST C# XingAPI 래퍼 - 로그인 처리파일 다운로드1
12145정성태2/18/202023804.NET Framework: 892. eBEST C# XingAPI 래퍼 - Sqlite 지원 추가파일 다운로드1
12144정성태2/13/202024001.NET Framework: 891. 실행 시에 메서드 가로채기 - CLR Injection: Runtime Method Replacer 개선 - 두 번째 이야기파일 다운로드1
12143정성태2/13/202018409.NET Framework: 890. 상황별 GetFunctionPointer 반환값 정리 - x64파일 다운로드1
12142정성태2/12/202022316.NET Framework: 889. C# 코드로 접근하는 MethodDesc, MethodTable파일 다운로드1
12141정성태2/10/202021314.NET Framework: 888. C# - ASP.NET Core 웹 응용 프로그램의 출력 가로채기 [2]파일 다운로드1
12140정성태2/10/202022671.NET Framework: 887. C# - ASP.NET 웹 응용 프로그램의 출력 가로채기파일 다운로드1
12139정성태2/9/202022329.NET Framework: 886. C# - Console 응용 프로그램에서 UI 스레드 구현 방법
12138정성태2/9/202028575.NET Framework: 885. C# - 닷넷 응용 프로그램에서 SQLite 사용 [6]파일 다운로드1
12137정성태2/9/202020212오류 유형: 592. [AhnLab] 경고 - 디버거 실행을 탐지했습니다.
12136정성태2/6/202021870Windows: 168. Windows + S(또는 Q)로 뜨는 작업 표시줄의 검색 바가 동작하지 않는 경우
12135정성태2/6/202027661개발 환경 구성: 468. Nuget 패키지의 로컬 보관 폴더를 옮기는 방법 [2]
12134정성태2/5/202024930.NET Framework: 884. eBEST XingAPI의 C# 래퍼 버전 - XingAPINet Nuget 패키지 [5]파일 다운로드1
12133정성태2/5/202022694디버깅 기술: 161. Windbg 환경에서 확인해 본 .NET 메서드 JIT 컴파일 전과 후 - 두 번째 이야기
12132정성태1/28/202025722.NET Framework: 883. C#으로 구현하는 Win32 API 후킹(예: Sleep 호출 가로채기) [1]파일 다운로드1
12131정성태1/27/202024438개발 환경 구성: 467. LocaleEmulator를 이용해 유니코드를 지원하지 않는(한글이 깨지는) 프로그램을 실행하는 방법 [1]
12130정성태1/26/202022027VS.NET IDE: 142. Visual Studio에서 windbg의 "Open Executable..."처럼 EXE를 직접 열어 디버깅을 시작하는 방법
12129정성태1/26/202029012.NET Framework: 882. C# - 키움 Open API+ 사용 시 Registry 등록 없이 KHOpenAPI.ocx 사용하는 방법 [3]
12128정성태1/26/202023147오류 유형: 591. The code execution cannot proceed because mfc100.dll was not found. Reinstalling the program may fix this problem.
... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...