본문 바로가기

Linux/Ubuntu10

Linux Shell #! /bin/bash #! /bin/sh 에 대한 고찰 보통 쉘스크립트에서 가장 첫줄에 오는 #! /bin/ 자리에 있는 shell 프로그램으로 밑 라인의 명령어를 실행한다고 일반적으로 알고 있습니다. 그런데 이 원리가 사실은 exec계열의 SystemCall을 사용한다는 것을 알게되었고, 어떤 원리인지 고찰해보는 포스팅입니다. exec가 #!를 어떻게 실행하는지, 그리고 #!가 쉘스크립트를 어떻게 실행하게 만드는지 포스팅이기 때문에 exec 시스템콜을 이미 알고있다고 가정하고 진행하겠습니다. $ ./excuteFile 프롬프트에 위 커맨드라인 명령어를 치게되면, "excuteFile"이 실행되게 됩니다. 좀 더 구체적으로는 현재 실행되고 있는 프롬프트(쉘)가 fork를 통해 child process를 만들고, exec를 호출하여 excuteFile 프로그램.. 2020. 6. 1.
Ubuntu(우분투) vim 설치 및 설정, Vundle 설치, Plugin 설정 사실 Ubuntu를 사용하시면, 실제 컴퓨터에서 vim으로 개발하는 경우는 요즘 많다고 생각은 들지 않지만, 그래도 나름 vim은 수 많은 plugin을 설치해서 이것저것 커스텀마이징 할 수 있습니다.!! 근데 경험상 좋은 IDE 급으로 커스텀 마이징을 하게되면 여기저기 오버헤드가 너무커서 저는 좀 불편하더군요. 그래도 가장 큰 장점이라면!! ssh를 사용한 원격접속할 때 vim 에디터를 사용할 수 있다는 장점이 있지요!! 노트북에서 급하게 리눅스에 ssh접속해서 개발할 때, 진짜 기본 vim으로 하려면 indent도 안되고... 이런저런 불편함이 많습니다. 노트북에서 개발하고 파일을 옮기면 되는거 아니냐~ 하실 수도 있지만, 파이썬이나 java같은 경우는 OS 독립적이기 때문에 어느정도 개발환경을 비슷.. 2020. 5. 1.
Ubuntu(우분투) 터미널 명령어 시스템(PATH) 경로에 추가하기 우분투 apt 저장소를 통해서 설치한 패키지들은 보통 자동으로 경로에 추가되어 터미널 어디서든 명령어를 실행할 수 있습니다. 하지만 직접 설치한 프로그램들은 매번 직접 디렉토리 경로를 찾아 들어가 쉘스크립트 혹은 프로그램을 직접 실행시켜야 하는 번거로움이 있습니다. 이 문제는 2가지 방법으로 간단하게 해결 가능합니다. 첫 번째 시스템 PATH에 경로를 직접 추가하는 방법입니다. Python의 가상환경인 중 하나인 tensorflow2.0 디렉토리가 있습니다. 매번 가상환경을 실행시킬 때마다 source ~/prac/tensorflow2.0/env/bin/activate 를 실행시켜주어야하는데, 경로를 매번 외울 수도 없고 다 치기도 힘듭니다 ..( ~/ 는 현재 계정 디렉토리 경로입니다. 보통의 첫 터미.. 2020. 4. 23.
Ubuntu(우분투) fail to start load kernel module이 일어난 문제점 중 하나.. 커널을 컴파일하여 변경한 후 이것저것 설정을 건들다가 fail to start load kernel module 와 같은 오류가 뜨고 실행이 되었습니다. >systemctl status systemd-modules-load.service 실행해보면 kernel module load에 실패했다는 여러 메세지와 함께 disable 상태 일 때.. 찾았던 해결방안 중 하나입니다. 구글링을 통해 여러 방안들을 찾아서 실행해봤지만 해결이 되지 않았는데, 오류 메세지를 읽고 차근차근 파일들을 확인한 결과 > sudo vi /etc/modules-load.d/modules.conf ( ubuntu의 화면이 제대로 켜지지 않는다면, ssh로 원격으로 터미널에 접속하거나, ctrl + F2릍 통해 tty2 터미널을 실행.. 2020. 3. 4.