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

비밀번호

댓글 작성자
 




... 136  137  138  139  140  141  142  143  144  145  [146]  147  148  149  150  ...
NoWriterDateCnt.TitleFile(s)
1496정성태9/20/201336311Windows: 75. 윈도우 8.1, 2012 R2 설치 후 원격 접속이 안 되는 문제
1495정성태9/20/201327100웹: 27. IE 11 - YBM Sisa.com에서 검색된 영단어의 발음 기호가 안 나오는 문제
1494정성태9/13/201337471.NET Framework: 385. Html Agility Pack 소개 - 웹 문서에서 텍스트만 분리하는 방법 [2]파일 다운로드1
1493정성태9/13/201338712.NET Framework: 384. WebClient.DownloadString 문자열 인코딩 문제
1492정성태9/13/201326493오류 유형: 186. The .NET assembly 'Microsoft.Vsa' could not be found.
1491정성태9/9/201329365.NET Framework: 383. RSAParameters의 ToXmlString과 ExportParameters의 결과 비교
1490정성태9/7/201365187기타: 34. 도서: 시작하세요! C# 프로그래밍: 기본 문법부터 실전 예제까지 [7]
1489정성태9/4/201350002오류 유형: 185. 오피스 워드 파일이 저장되지 않는 문제 [2]
1488정성태8/27/201333436.NET Framework: 382. WCF에서 DataSet을 binary encoding으로 직렬화하는 방법파일 다운로드1
1487정성태8/27/201335768개발 환경 구성: 195. 로컬 PC에서의 WCF 통신을 Fiddler로 보는 방법 [1]
1486정성태8/27/201333194.NET Framework: 381. SqlCommand를 이용해 Microsoft SQL 서버의 쿼리 실행 계획을 구하는 방법파일 다운로드1
1485정성태8/26/201336838.NET Framework: 380. 프로세스 스스로 풀 덤프 남기는 방법 [3]파일 다운로드1
1484정성태8/23/201331144제니퍼 .NET: 24. 제니퍼 닷넷 적용 사례 (4) - GZIP 인코딩으로 인한 성능 하락
1483정성태8/23/201330874.NET Framework: 379. System.IO.MemoryStream, ArraySegment<T> 의 효율적인 사용법 [1]
1482정성태8/23/201324359.NET Framework: 378. Java / C# - 정수의 부호 유무에 따른 16진수 문자열 변환
1481정성태8/22/201325322오류 유형: 184. PaaS 유형(Cloud Services)의 Azure VM에 연결할 때 계정 만료 에러가 발생하는 경우
1480정성태8/22/201341098개발 환경 구성: 194. 윈도우 서버의 80 포트에 대한 port forwarding 설정 방법파일 다운로드1
1479정성태8/14/201329541오류 유형: 183. IIS - 바인딩 추가 시 Object reference not set to an instance of an object 오류 [5]
1478정성태8/14/201332744오류 유형: 182. 윈도우 정품 활성화 오류 - 0x80070426
1477정성태8/14/201331963VC++: 71. codeplex의 Project Austin - 실감나게 책장 넘기는 표현
1476정성태8/13/201339657디버깅 기술: 55. Windbg - 윈도우 핸들 테이블 (2)
1475정성태8/12/201337157.NET Framework: 377. 프로세스가 종료된 후에도 소켓이 살아있다면?파일 다운로드1
1474정성태8/10/201335380오류 유형: 181. 윈도우 8 - WmiPrvSE.exe 프로세스가 CPU 소비하는 현상
1473정성태8/8/201332073VC++: 70. Win32 socket이 Thread-safe할까? [1]파일 다운로드1
1472정성태8/7/201330596.NET Framework: 376. .NET 2.0의 유니코드 관련 문자열 비교 오류
1471정성태8/7/201333316개발 환경 구성: 193. .aspx 확장자 대신 .html 확장자를 사용하는 방법
... 136  137  138  139  140  141  142  143  144  145  [146]  147  148  149  150  ...