คำถามติดแท็ก environment-variables

ชุดของตัวแปรแบบไดนามิกที่สามารถส่งผลกระทบต่อพฤติกรรมการทำงานของกระบวนการและการเข้าถึงทรัพยากร

2
การตั้งค่าเส้นทางเพื่อใช้กับผู้ใช้ทั้งหมดรวมถึงรูท / sudo
คำแนะนำในฉันจะตั้งค่าตัวแปร PATH สำหรับผู้ใช้ทั้งหมดบนเซิร์ฟเวอร์ได้อย่างไร ทำงานเพื่อตั้งค่าเส้นทางสำหรับผู้ใช้ 'ปกติ' ทั้งหมด อย่างไรก็ตามถ้าฉันทำsudo -sแล้วprintenv PATHเส้นทางที่อัปเดตจะไม่ปรากฏขึ้น ฉันดูที่การตั้งค่าเส้นทางของ TeX Live สำหรับรูท แต่นี่ดูเหมือนจะไม่สมเหตุสมผลสำหรับฉันบางทีอาจเป็นเพราะฉันมาจากพื้นหลังของ Windows มีวิธีใดบ้างในการตั้งค่าพา ธ ทั้งระบบอย่างแท้จริงเช่นว่ารายการจะได้รับการสืบทอดโดยทุกกระบวนการที่ทำงานบนระบบหรือไม่?

3
ฉันจะตั้งค่าตัวแปรสภาพแวดล้อมแบบถาวรสำหรับรูทได้อย่างไร
ในการสร้างตัวแปรสภาพแวดล้อมแบบถาวรฉันเพิ่มไฟล์สคริปต์ลงในไดเร็กทอรี /etc/profile.d ตัวอย่างเช่น: # สคริปต์ของฉัน ส่งออก MY_VAR = var_value สิ่งนี้ทำงานได้อย่างถูกต้องสำหรับผู้ใช้ปัจจุบัน: alex @ alex-64: ~ $ echo $ MY_VAR var_value ตอนนี้ฉันต้องการตัวแปรสภาพแวดล้อมที่เหมือนกันสำหรับผู้ใช้รูท แต่สคริปต์ /etc/profile.d ไม่ทำงานสำหรับรูท: alex @ alex-64: ~ $ echo $ MY_VAR var_value alex @ alex-64: ~ $ sudo su root @ alex-64: / home / alex # echo $ MY_VAR …

7
วิธีกำหนดค่าการเข้าถึง ADB สำหรับอุปกรณ์ Android
ฉันใช้ Ubuntu 12.10 และฉันได้ติดตั้ง Android SDK แล้วตั้งค่าเป็นเส้นทางในผู้ใช้ของฉัน.bashrcและใช้งานได้ ปัญหาคือโทรศัพท์ของฉันต้องการให้ adb ทำงานโดยรูทเพื่อขออนุญาต แต่ใช้ adb กับ sudo ฉันได้รับข้อผิดพลาดดังต่อไปนี้: sudo: adb: ไม่พบคำสั่ง ฉันพยายามจะใช้sudo -E adb start-serverแต่ก็ไม่ได้ผล พยายามที่จะเพิ่มสายเส้นทางการส่งออกไป/root/.bashrcและ (หลังจากทราบว่ามันไม่ได้ช่วย) /etc/bash.bashrcเพื่อ ฉันจำได้ว่าฉันสามารถตั้งค่าบน Arch Linux ของฉันได้ แต่ฉันเดาว่าปัญหาของฉันตอนนี้เชื่อมต่อกับบัญชีรูท Ubuntu ที่ไม่ทำงานเหมือนที่ฉันคาดไว้ สิ่งที่ฉันไม่เข้าใจมีดังต่อไปนี้: สิ่งเหล่านี้ใช้ไม่ได้: martin@alyx:~$ sudo adb devices sudo: adb: command not found สิ่งนี้จะทำ (พิมพ์เส้นทางแบบเต็ม): martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices * …

2
มีความแตกต่างระหว่าง“.” และ“ แหล่ง” ในการทุบตีหลังจากทั้งหมดหรือไม่
ฉันกำลังมองหาความแตกต่างระหว่าง "." และคำสั่ง builtin "source" และแหล่งข้อมูลบางแหล่ง (เช่นในการสนทนานี้และbash manpage) แนะนำว่าสิ่งเหล่านี้เหมือนกัน อย่างไรก็ตามหลังจากปัญหาเกี่ยวกับตัวแปรสภาพแวดล้อมฉันทำการทดสอบ ฉันสร้างไฟล์testenv.shที่มี: #!/bin/bash echo $MY_VAR ในคอมมานด์พรอมต์ฉันทำสิ่งต่อไปนี้: > chmod +x testenv.sh > MY_VAR=12345 > ./testenv.sh > source testenv.sh 12345 > MY_VAR=12345 ./testenv.sh 12345 [โปรดทราบว่าแบบฟอร์มที่ 1 ส่งคืนสตริงว่างเปล่า] ดังนั้นนี้ทดลองเล็ก ๆ น้อย ๆ แสดงให้เห็นว่ามีคือความแตกต่างหลังจากที่ทุกที่สำหรับคำสั่ง "ต้นฉบับ" เด็กสืบทอดตัวแปรสภาพแวดล้อมทั้งหมดจากผู้ปกครองคนหนึ่งที่สำหรับ "" มันไม่ใช่. ฉันไม่มีอะไรหรือนี้เป็นคุณลักษณะที่ไม่มีเอกสาร / เลิกการทุบตี ? [GNU bash, รุ่น …

3
ตัวแปร PATH แบบถาวร
ฉันจะทำให้/media/De Soft/mongodb/binตัวแปร PATH นี้เป็นแบบถาวรได้อย่างไร ทุกคนพูดว่า " export PATH=$PATH:media/De\ Soft/mongodb/binกับคุณ~/.profileหรือ.bashrcหรือ.zshenvขึ้นอยู่กับเปลือกของคุณ" ผมไม่ทราบว่าสิ่งที่เป็น~/.profileหรือหรือ.bashrc .zshenvพวกเขาทำอะไรจริง ฉันจะเพิ่มexport PATH=$PATH:my/pathไปยัง. profile / .bashrc / .zshenv ของฉันได้อย่างไร ฉันใช้ Ubuntu 14.04 LTS 64 บิตกับเทอร์มินัลเริ่มต้น

2
เหตุใดจึงไม่มี. profile เมื่อเปิดเทอร์มินัล
เพิ่งติดตั้ง Ubuntu 14.04.1 LTS ตาม. โปรไฟล์ # ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash, if ~/.bash_profile or ~/.bash_login exists. ไม่มี ~ / .bash_profile หรือ ~ / .bash_login ดูเหมือนว่าแหล่งที่มา. profile เมื่อเปิดเทอร์มินัล ทำไมมันถึงไม่เป็นแหล่งที่มาของโปรไฟล์เมื่อเปิดเทอร์มินัล เหตุใดจึงมีโปรไฟล์หากไม่มีที่มา ฉันจะรู้ / ควบคุมสิ่งที่ได้มาเมื่อเปิดเทอร์มินัลใหม่ได้อย่างไร เมื่อเปิดเทอร์มินัลใหม่มันจะทำการ "ล็อกอิน" หรือไม่? สถานที่ที่ดีในการเพิ่ม $ …

4
ฉันจะรีเซ็ต $ PATH เป็นค่าเริ่มต้นใน Ubuntu ได้อย่างไร
ฉันตั้งใจล้างไดเรกทอรีทั้งหมดของในขณะที่พยายามที่จะเพิ่มใหม่ใน$PATH ~/.bashrcฉันเปิดหน้าต่างเทอร์มินัลใหม่เมื่อฉันแก้ไขและตอนนี้$PATHว่างเปล่า ฉันกังวลว่าฉันบูตจากไดรฟ์อื่นเพื่อค้นหาว่า$PATHฉันจะไม่สามารถบูตเข้าสู่ไดรฟ์นี้ได้อีก โดยพื้นฐานแล้วผลลัพธ์เริ่มต้นของecho $PATHอะไร

2
วิธีตั้งค่าตัวแปรสภาพแวดล้อม PATH และ M2_HOME อย่างถาวรใน ubuntu สำหรับ maven3
ฉันได้ดาวน์โหลดไฟล์ apache-maven3.zip ล่าสุดและแตกไฟล์ไปยังโฟลเดอร์: /home/gaurav/Java/maven3. ฉันไม่รู้วิธีตั้งค่าตัวแปรสภาพแวดล้อมสำหรับ maven - เช่น PATH และ M2_HOME ฉันลองสิ่งต่าง ๆ ด้านล่าง: export M2_HOME=/home/gaurav/Java/maven3 export PATH= /home/gaurav/Java/maven3/bin:${PATH} หลังจากตั้งค่านั้นฉันวิ่งmvn --versionและมันทำงานอย่างถูกต้อง แต่เมื่อครั้งต่อไปฉันจะเริ่มต้นเครื่องของฉันและประเภท$M2_HOMEของมันไม่ได้แสดงให้ฉันดูรายละเอียดของตัวแปรเส้นทางทั้งmvn --versionจะได้รับการดำเนินการ โปรดช่วยฉันแก้ไขปัญหาการตั้งค่าตัวแปรสภาพแวดล้อมอย่างถาวรใน Ubuntu

2
“ $ PATH” และ“ ~ / bin” คืออะไร ฉันจะมีสคริปต์ส่วนตัวได้อย่างไร
คือ$PATHอะไร ฉันจะมีคำสั่ง / โปรแกรมที่พร้อมใช้งานสำหรับฉันเท่านั้นได้อย่างไร ฉันเคยเห็นเส้นทางนี้ที่~/binกล่าวถึงก่อนหน้านี้ แต่มันใช้เพื่ออะไรและฉันจะใช้มันได้อย่างไร

6
ส่งออก PATH = อะไร: $ PATH หมายถึงอะไร
ฉันยังใหม่กับ Linux และฉันวางคำสั่งต่อไปนี้ไว้ท้ายไฟล์.profileภายใต้โฮมโฟลเดอร์ของฉัน: export PATH="~/.composer/vendor/bin:$PATH" ฉันรู้ปัญหาของตัวแปรสภาพแวดล้อมและค่าของพวกเขาเล็กน้อยจาก Windows แต่ในกรณีนี้ฉันต้องการที่จะเข้าใจสิ่งที่คำสั่งนี้ทำและสิ่งที่เป็นส่วนประกอบด้วย: วลี "ส่งออก" นี้ตอนเริ่มต้นคืออะไร มันกำลังส่งออกข้อมูลเพื่อให้สามารถใช้งานกับ Bash ได้หรือไม่ อะไรคือPATHสิ่งที่หนึ่งและที่สองคืออะไร$PATHและทำไมเราถึงต้องการสอง

4
ตัวแปร $ BASH_COMMAND ดีอย่างไร
ตามคู่มือ Bashตัวแปรสภาพแวดล้อมBASH_COMMANDมี คำสั่งที่กำลังดำเนินการหรือกำลังจะถูกดำเนินการยกเว้นว่าเชลล์กำลังดำเนินการคำสั่งเป็นผลมาจากกับดักซึ่งในกรณีนี้มันเป็นคำสั่งที่ดำเนินการในเวลาที่กับดัก การเอามุมของมุมกับดักนั้นไว้ถ้าฉันเข้าใจถูกต้องนี่หมายความว่าเมื่อฉันรันคำสั่งตัวแปรจะBASH_COMMANDมีคำสั่งนั้นอยู่ ไม่ชัดเจนว่าตัวแปรนั้นไม่มีการตั้งค่าหลังจากการดำเนินการคำสั่ง (กล่าวคือเป็นเพียง avaialble ขณะที่คำสั่งกำลังทำงาน แต่ไม่ใช่หลังจาก) แม้ว่าจะมีใครโต้แย้งว่าเป็นเพราะ "คำสั่งที่กำลังดำเนินการอยู่หรือกำลังจะถูกดำเนินการ" มันไม่ใช่คำสั่งที่เพิ่งถูกเรียกใช้งาน แต่ให้ตรวจสอบ: $ set | grep BASH_COMMAND= $ ว่างเปล่า ฉันคาดว่าจะเห็นBASH_COMMAND='set | grep BASH_COMMAND='หรืออาจจะเป็นเพียงBASH_COMMAND='set'แต่ว่างเปล่าทำให้ฉันประหลาดใจ ลองทำอย่างอื่น: $ echo $BASH_COMMAND echo $BASH_COMMAND $ ดีที่ทำให้รู้สึก ผมรันคำสั่งecho $BASH_COMMANDและตัวแปรมีสตริงBASH_COMMAND echo $BASH_COMMANDทำไมเวลานี้ถึงใช้งานได้ แต่ไม่ใช่ก่อนหน้านี้ ลองทำsetอีกครั้ง: $ set | grep BASH_COMMAND= BASH_COMMAND='echo $BASH_COMMAND' $ ดังนั้นรอ มันถูกตั้งค่าเมื่อฉันเรียกใช้งานechoคำสั่งนั้นและจะไม่ถูกยกเลิกหลังจากนั้น แต่เมื่อฉันดำเนินการsetอีกครั้งBASH_COMMAND ไม่ได้ตั้งค่าsetคำสั่ง …

3
ทำไม“ A = 10 echo $ A” ไม่พิมพ์ 10
คำสั่งนี้: A=10 echo $A พิมพ์บรรทัดว่าง ทำไมไม่10? ทำไมการตั้งค่าสภาพแวดล้อมชั่วคราวในสถานที่ไม่ทำงาน ฉันต้องการทราบเหตุผลและคำอธิบายมากกว่าวิธีการแก้ปัญหา ฉันใช้ LANG=C gcc ... เพื่อบังคับให้ gcc ใช้ภาษาทางเลือก (อังกฤษ) แทนภาษาของระบบ (ภาษาจีน) ดังนั้นฉันคิดว่าVAR=valueคำนำหน้าจะติดตั้งสภาพแวดล้อมชั่วคราวสำหรับคำสั่งต่อไปนี้ แต่ดูเหมือนว่าฉันมีความเข้าใจผิดบ้าง

4
Bash auto สมบูรณ์สำหรับตัวแปรสภาพแวดล้อม [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับถาม Ubuntu ปิดให้บริการใน6 ปีที่ผ่านมา ดูเหมือนว่าคุณสมบัติการเติมข้อความอัตโนมัติของ bash จะไม่ทำงานกับตัวแปรสภาพแวดล้อมใน 11.04 พฤติกรรมปัจจุบันระบุไว้ด้านล่าง export SCRIPT=/home/user/script cd $SCRIPT/<tab> ส่งผลให้มีเครื่องหมายแบ็กสแลช ( \) ถูกเพิ่มก่อน$SCRIPTเช่นจะมีข้อความแจ้ง cd \$SCRIPT/ สิ่งเดียวกันจะเกิดขึ้นหากcdถูกแทนที่ด้วยlsหรือคำสั่งอื่น ๆ นอกจากนี้หากมีไฟล์ปฏิบัติการในเส้นทางที่มีอยู่ใน $ SCRIPT และฉันต้องการเรียกใช้ $SCRIPT/<tab> Bash ไม่แสดงตัวเลือกภายในโฟลเดอร์ (ไม่ว่าจะมีไฟล์เดียวหรือหลายไฟล์ / ไดเรกทอรีภายในเส้นทางที่มีอยู่ในตัวแปรสภาพแวดล้อม) กล่าวอีกนัยหนึ่งการเติมข้อความอัตโนมัติไม่ทำงานกับตัวแปรสภาพแวดล้อม

2
วิธีปิดการใช้งาน http_proxy อย่างถาวร
เมื่อฉันลบพรอกซีจากระบบ / เครือข่ายและใช้ทั้งระบบมันยังคงอยู่เมื่อทำงานในคอนโซล เมื่อฉันวิ่ง: env | grep proxy มันพิมพ์: http_proxy=http://proxy.studnet.lan:8080 ftp_proxy=ftp://proxy.studnet.lan:8080 socks_proxy=socks://proxy.studnet.lan:8080 https_proxy=https://proxy.studnet.lan:8080 ฉันสามารถลบได้ด้วย: unset http_proxy unset ftp_proxy unset socks_proxy unset https_proxy แต่มันไม่ถาวรเมื่อฉันเปิดเทอร์มินัลตัวแปรพร็อกซีเหล่านี้อีกครั้ง จะลบออกอย่างถาวรได้อย่างไร

2
จะเพิ่มเวลารอให้โปรแกรมที่ไม่ตอบสนองได้อย่างไร
ฉันได้ติดตั้ง Ubuntu GNOME แล้วและพบว่าฉันได้รับโปรแกรมมากมายไม่ตอบสนองข้อความ ฉันต้อง "บังคับให้ออกจากโปรแกรม" หรือ "รอ" เพื่อเพิ่มอีกนิด ฉันสังเกตว่าในแต่ละครั้งที่ฉันรอโปรแกรมในที่สุดโปรแกรมก็จะดำเนินต่อไปโดยไม่มีปัญหา ดังนั้นฉันคิดว่าอาจมีการกำหนดค่า "หมดเวลา" สำหรับโปรแกรมที่จะถือว่าไม่ตอบสนองและฉันต้องการเพิ่มการหมดเวลานี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.