환경 변수를 설정하고 메모리의 파일을 편집하지 않고 다른 쉘에 영향을 줄 수 있는 방법이 있습니까? 이 방법은 시스템에 연결하는 모든 새 사용자에게 적용되며 다음에 Linux 시스템을 재부팅한 후에만 적용됩니까?
나는 내 Linux에서 컴퓨터가 부팅될 때만 (스크립트에서) 작동하는 것을 기억하려고 노력하고 있으므로(따라서 파일이 필요하지 않음) 내 쉘에서 연결된 모든 사용자에 대해 일부 플래그를 설정하고 싶습니다. 예:
linux_test_run=yes
그러나 나는 해당 Linux에서 열린 새로운 셸에서 작동하기를 원합니다. 다음에 누군가가 컴퓨터를 재부팅하면 변수가 사라지기를 바랍니다.
이를 달성하기 위해 내가 할 수 있는 (간단한) 작업이 있나요? (파일을 사용하지 않고...)
답변1
export
환경의 하위 프로세스에 전달될 변수를 표시하는 데 사용할 수 있습니다 .
export linux_test_run=yes
새로 연결된 사용자가 이 변수를 사용할 수 있도록 하려면 셸의 초기화 파일을 편집해야 합니다.
답변2
글쎄, 거기에 있는 파일은 /tmp
일반적으로 재부팅 시 정리되므로 "파일이 존재하면 가져옵니다"와 같은 파일을 가져오는 스크립트를 포함하는 것은 어떨까요? 그런 다음 필요에 따라 해당 파일에서 초기화할 수 있습니다. 이는 /etc/profile
.
그런데 문맥이 잘 이해가 안 되네요. 수행하려는 작업에 대한 자세한 내용을 제공할 수 있으면 더 나은 답변을 얻을 수 있습니다.
답변3
대부분의 로그인 방법은 환경 변수를 읽습니다 /etc/profile
. (다른 가능성이 있을 수도 있지만 이것이 조치하기 가장 쉽습니다.) 따라서 제가 올바르게 이해했다면 /etc/profile
다음 재부팅 시 환경 변수 할당을 추가하고 이후 재부팅 시 이를 제거하고 싶을 것입니다.
먼저, 아직 없는 경우(일부 배포판에는 설정되어 있음)라는 디렉터리를 만들고 /etc/profile.d
이 코드 조각을 다음에 추가합니다 /etc/profile
.
for x in /etc/profile.d/*.sh; do
. "$x"
done
unset x
export linux_test_run=yes
이라는 파일이 포함된 파일을 만듭니다 /etc/profile.d/test_run.sh.0
.
다음 코드 조각을 /etc/rc.local
(또는 시작 시 실행되는 다른 스크립트)에 추가합니다.
for x in /etc/profile.d/*.sh.[0-9]*; do
n=${x##*.} # extract the part after the last .
case n in
*[!0-9]*) continue;; # n is not a number, so skip this file
*[1-9]*) mv "$x" "${x%.*}.$(($n-1))";; # decrement the number in the file name
*) # the file is *.sh.0, so rename to .sh and schedule for deletion
echo "${x%.*}" >>/etc/profile.d/cancel-on-reboot.list
mv "$x" "${x%.*}";;
esac
done
if [ -e /etc/profile.d/cancel-on-reboot.list ]; then
# rename all files in this list so they won't be considered any longer
while read -r x; do
mv "$x" "$x.cancelled"
done </etc/profile.d/cancel-on-reboot.list
rm /etc/profile.d/cancel-on-reboot.list
fi
재부팅 후 이 설정을 다시 활성화하려면 이름을 *.sh.0
.
답변4
bashrc
죄송합니다. 시작 파일을 어딘가 에서 편집해야 합니다 /etc
. 아마도 .
그러나 파일을 사용하지 않으려는 유일한 이유가 재부팅 시 이 동작이 사라지기를 원하는 경우에는 다른 방법이 있습니다.
- 이 파일
setvariable.bash
에서 .bashrc
/etc/init.d
재부팅 시 시작될 파일을 파일에 넣고 비활성화합니다setvariable.bash
(빈 파일이나 다른 것으로 교체).
해킹이지만 작동할 수도 있습니다.