터미널을 열고 내 프로젝트 폴더(예: cd /proj/tickecting_app
)로 이동합니다. 그 후 다음 명령을 실행합니다 rvm use ruby 1.9.x@gemset
.
터미널을 열 때마다 이 명령이 실행되기를 원합니다.
자동으로 실행할 수 있는 방법이 있나요? 좀 더 구체적으로 말하자면, 별도의 탭에서 다양한 프로젝트로 이동합니다.
예를 들어:
- 먼저 탭
cd /proj/tickecting_app
하고 실행하세요rvm use ruby 1.9.x@gemset
. - 두 번째 탭을
cd /proj/rss_feed_app
실행하고rvm use ruby 2.1.x@gemset
.
프로젝트에 따라 다른 명령을 실행하고 싶습니다. 가능합니까?
답변1
.rvmrc
RVM을 사용하는 경우 프로젝트 디렉터리에 다음 이름의 파일을 배치하면 됩니다.
rvm use ruby 1.9.x@gemset
두 번째 프로젝트의 경우에도 동일합니다. 호출을 변경하면 됩니다 rvm
.
답변2
별칭이 유용할 수 있습니다. alias
실행해야 하는 각 특정 디렉터리와 명령에 대해 하나씩 만들 수 있습니다 . 따라서 귀하가 제공한 두 가지 예의 경우 다음과 같습니다.
alias ticketapp='cd /proj/tickecting_app && rvm use ruby 1.9.x@gemset'
alias feedapp='cd /proj/rss_feed_app && rvm use ruby 2.1.x@gemset'
그래서 다음번에는 그냥 주어야 합니다 alias
(그리고 줄 필요는 없습니다 cd
). 즉 ticketapp
, feedapp
위의 경우입니다.
별칭을 영구적으로 만들려면 다음을 수행하세요.
vim ~/.bashrc
.bashrc
이러한 별칭 명령을 파일 에 있는 그대로 제공합니다.
답변3
[mikeserv@localhost ~]$ PS1=$PS1'$(
[ ${last_hist=\!} -ne \! ] && {
h=$(history 1)
[ -n "${h#"${h##* cd *}"}" ] &&
. ./.dircmd >&2 2>/dev/null
})${0##*["$0"$((last_hist=\!))]*}'
[mikeserv@localhost ~]$ cd .
[mikeserv@localhost ~]$
[mikeserv@localhost ~]$ echo
[mikeserv@localhost ~]$ cat <<\DIRCMD >.dircmd
echo this is my home directory
> DIRCMD
[mikeserv@localhost ~]$
[mikeserv@localhost ~]$ echo
[mikeserv@localhost ~]$ cd .
this is my home directory
[mikeserv@localhost ~]$
비슷한 것이 POSIX 시스템에서도 작동할 것입니다. 하지만 제 생각에는 bash
!bang 앞에 백슬래시만 있으면 된다고 생각합니다. bash
또한 작동하지 않는 방식 fc
(이식 가능)으로 기록을 업데이트하는 것 같지만 작동합니다 history
. 다른 셸에서는 해당 history 1
비트가 상호 교환 가능해야 fc -l -1
하지만 bash
그 뒤에 있는 명령인 것 같습니다. 정말 실망스럽습니다.
어쨌든 프롬프트가 그려질 때마다 $last_hist
마지막 명령의 기록 번호로 변수가 정의됩니다. 매개변수 대체의 일치 필드에서 이 작업을 수행합니다. 이는 항상 어떤 것과도 동일하지 않으므로 프롬프트에 표시되지 않습니다.
확인은 fc
마지막 기록 번호가 실제로 증가했는지 확인하는 것입니다. 예를 들어 Enter 키를 누르지 않았습니까? 또한 마지막 명령이 true인지 확인합니다 . 둘 다 true이면 현재 디렉터리에 있는 파일을 가져오려고 cd
시도합니다 . 있는 경우 실행합니다. 그렇지 않다면, 아 그렇군요..
.dircmd