ไม่ใช่ sudo ทางเลือกสำหรับ / usr / local / bin สำหรับสคริปต์ทั่วไป


16

ฉันคุ้นเคยกับการใส่สคริปต์ทั่วไป/usr/local/binเพื่อให้ฉันสามารถเรียกใช้งานได้จากทุกที่ด้วยเทอร์มินัล

ตัวอย่างเช่นฉันสร้างเชลล์สคริปต์ชื่อ1ทำให้สามารถเรียกใช้งานได้ด้วยchmod +x 1และใส่ไว้ใน/usr/local/binและภายในสคริปต์ที่ฉันพิมพ์#!/bin/shในบรรทัดแรกแล้วตามด้วยคำสั่งของฉัน จากนั้นเป็นต้นมาสามารถใช้งานได้อย่างสะดวกและรวดเร็วโดยพิมพ์

1Enter

บนเทอร์มินัลจากภายในโฟลเดอร์ใด ๆ

ปัญหาของฉันคือว่าฉันกำลังทำงานบนคอมพิวเตอร์ที่ไม่สามารถทำได้sudoและฉันไม่สามารถคาดหวังว่าจะได้รับมันดังนั้นฉันจึงไม่สามารถวางสคริปต์ไว้ใน/usr/local/binได้

ตัวเลือกของฉันคืออะไร? มีเส้นทางอื่นที่มีความสามารถ "เรียกใช้จากที่ใดก็ได้" เดียวกันซึ่งฉันสามารถเข้าถึงได้โดยไม่ต้องsudoวิธีอื่นเพื่อให้ได้สิ่งที่เทียบเท่าหรือไม่

คำตอบที่ได้รับการยอมรับสำหรับโพสต์นี้พูดว่า

สำหรับสคริปต์ที่ผู้ใช้กำหนดให้ใช้ bin / ในไดเรกทอรีบ้านของคุณ

ซึ่งฉันพยายาม แต่ไม่มี binโฟลเดอร์ในโฮมไดเร็กตอรี่ของฉันและเมื่อฉันสร้างมันขึ้นมาฉันยังไม่สามารถเรียกใช้สคริปต์จากที่อื่นได้

ฉันกำลังใช้งาน Ubuntu 12.04 LTS


2
อย่าใช้ 1 หรืออะไรทำนองนั้นเป็นชื่อสคริปต์ ลองคำนวณบางอย่างในเชลล์ของคุณ: เช่น expr 1 + 1 (และถ้าไม่ใช่คุณกำลังทำอยู่สคริปต์บางตัวจะทำมันในบางจุดแน่นอน)
ราน

1
@frlan: การexpr 1 + 1ได้รับผลกระทบจากการปรากฏตัวของสคริปต์ที่มีชื่อ1อย่างไร
psmears

จริง ... ไม่ได้มีผลกระทบต่อหรือทุบตีเลขคณิตexpr $(( 1 + 1 ))
Campa

คำตอบ:


19

ตัวเลือกของฉันคืออะไร? มีเส้นทางอื่นที่มีความสามารถ "ทำงานได้ทุกที่" ซึ่งฉันสามารถเข้าถึงได้โดยไม่ต้องใช้ sudo หรือวิธีอื่นเพื่อให้ได้สิ่งที่เทียบเท่าหรือไม่

ทำอย่างไร?

สร้าง dir ในบ้านของคุณเพื่อเก็บสคริปต์ของคุณตามปกติชื่อbinเป็นแบบแผน

mkdir ~/bin

ตอนนี้ย้ายสคริปต์ของคุณไปที่ถังขยะ

mv somescript ~/bin

ตอนนี้จะทำให้จูนได้จากทุกที่ได้อย่างไร!

คุณต้องเพิ่มbinไปยังเส้นทาง

เปิดของคุณ .bashrc

gedit .bashrc

และเพิ่มบรรทัดนี้:

export PATH=$PATH:/home/username/bin

อย่าลืมแทนที่usernameด้วยชื่อผู้ใช้ของคุณ

บันทึกและออกจากนั้นแหล่ง bashrc

source .bashrc

และตอนนี้คุณก็เรียบร้อยคุณสามารถเรียกใช้สคริปต์ของคุณตามที่คุณเคยทำ! แต่คุณต้องสังเกตว่านี่เกี่ยวข้องกับผู้ใช้ของคุณเท่านั้น

หมายเหตุ: เป็นการดีกว่าที่จะเปลี่ยนชื่อสคริปต์ของคุณนอกเหนือจาก 1, 2 เนื่องจากคุณอาจประสบปัญหาบางอย่างกับชื่อนั้น


UPDATE:

คุณสามารถทำเช่นเดียวกันเพียงแค่สร้าง dir ถังในบ้านของคุณแล้วแทนsource ~/.profile ~/.bashrcเนื่องจากการเพิ่ม ~ / bin ใน PATH ของคุณอยู่ในรายการแล้ว.profile

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

ฉันใช้export PATH=$PATH:$HOME/binดังนั้นฉันสามารถใช้ bashrc เดียวกันสำหรับบัญชีอื่นที่มีชื่อผู้ใช้ที่แตกต่างกัน
Anthony G - ความยุติธรรมสำหรับ Monica

1
เพียงกล่าวถึง~/bin เป็น$PATHค่าเริ่มต้นบน Ubuntu เพียงแค่เรียกใช้source ~/.profileหรือออกจากระบบ / หลังจากที่คุณสร้างไดเรกทอรี
Jacob Vlijm

@JacobVlijm เวอร์ชั่นไหน !!! ฉันใช้ 12.04, 14.04, 15.04 และไม่มีพวกเขา ~ / bin ในเส้นทาง
Maythux

ในทั้งหมดของพวกเขาก็มักจะใช้มันในหลาย (ได้รับการยอมรับ) คำตอบของฉันเป็นอย่างดีไม่เคยได้แสดงความคิดเห็นใด ๆ ในที่ทำงานของเธอที่บ้านในห้าระบบเช่นกัน source ~/.profileแต่เป็นกล่าวว่าหลังจากการทำงาน ดู (เช่น) ที่นี่: askubuntu.com/a/247422/72216
Jacob Vlijm

1
เขากล่าวว่าแหล่งที่มาเขาไม่เคยกล่าวว่าแหล่งที่มา~/.profile ~/.bashrc :) ยังเป็นกฎทั่วไปตัวแปรสิ่งแวดล้อมควรจะไปใน.profileและไม่ได้.bashrcเนื่องจากพวกเขาจะต้องได้รับการตั้งค่าครั้งเดียว (ไม่มีสิ่งใดที่จะบอกว่าคำตอบของคุณไม่
ดีใจ

4

นอกเหนือจาก/ubuntu//a/643030/218015คุณอาจกำหนดนามแฝงภายใน. bashrc ของคุณสำหรับงานขนาดเล็กที่ใช้บ่อย เช่น

alias ll='ls -l'
alias ls='ls --color=auto'

จะสร้าง "คำสั่ง" ให้คุณซึ่งจะทำ ls -l และ ls จะมีสีหลังจากการกำหนดนามแฝง https://wiki.ubuntuusers.de/aliasมีตัวอย่างเพิ่มเติมและวิธีการตั้งค่า

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