>

VM에서 터미널과 작업 영역을 구성하는 데 도움이되는 세 개의 BASH 스크립트를 만들려고합니다.

아래에 파라미터를 설정하고자하는 명령이 있습니다.

1) 터미널 창의 제목을 바꾸는 방법 :

PS1='\[\e]0;TERMINAL NAME\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

2) 작업 공간 수를 변경하려면 :

gsettings set org.gnome.desktop.wm.preferences num-workspaces "5"

3) 작업 공간 이름을 바꾸려면 :

gsettings set org.gnome.desktop.wm.preferences workspace-names "['IntelliJ', 'Cloud Discovery', 'Full Stack', 'Simulators', 'Misc']"

BASH 스크립팅을 마친 지 얼마되지 않아서 BASH 스크립트를 통해 콘솔 명령을 실행하는 방법을 잊고 있습니다.

최초의 시도가 모두 실패했습니다. 가장 최근에 작성한 코드는 다음과 같습니다.

#!/bin/bash
export cmd="PS1='\[\e]0;$1\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '"
echo {$cmd}
./setNewTermName MyName

그러나 위와 같이 스크립트를 실행하면 터미널 이름이 바뀌지 않습니다. 그러나 (실제 이름으로 대체)와 같은 명령에서 직접 PS1 명령을 실행하면 작동합니다.

내가 잘못한 것에 대한 아이디어가 있습니까?

  • 답변 # 1

    아래와 같이 제목의 값을 인수로 가져올 로컬 변수를 정의해야합니다. 그런 다음 PS1 변수에서 해당 로컬 변수 (이 경우 제목)를 사용합니다.

    그러면 스크립트를 실행하려면 스크립트의 변수가 상위 쉘에 표시되도록 현재 쉘에서 스크립트를 "소스"해야합니다.

    #!/bin/bash
    title=$1;
    PS1='\[\e]0;${title}\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    
    

    따라서 스크립트를 다음과 같이 실행하는 대신

    ./setNewTermName MyName
    
    

    아래와 같이 /없이 실행하십시오. 마침표 뒤에 공백이 있습니다.

    . setNewTermName MyName
    
    

    또는 다음과 같이 :

    source setNewTermName MyName
    
    

  • 이전 mysqli - 반복 레코드와 PHP에 추가 된 다른 모든 요소를 ​​한 번만 표시
  • 다음 java - JavaFX 경고가 여러 경고를 여는 것을 중지하는 방법은 무엇입니까?