Alt + F2 (เรียกใช้แอปพลิเคชัน) ไม่ทำงานสำหรับคำสั่งที่กำหนดเอง


12

เพื่อเพิ่มความเร็วในการพัฒนา Android ฉันได้ทำการแก้ไข~/.bashrcเพื่อเพิ่มเส้นทางไปยังPATH:

export PATH=${PATH}:/opt/android-sdk/tools:/opt/android-sdk/platform-tools

มันใช้งานได้ดีจากบรรทัดคำสั่ง (ฉันสามารถพิมพ์androidและไม่ว่าฉันจะอยู่ที่ไหน SDK Android และ AVD Manager จะเริ่มต้นได้ดี

อย่างไรก็ตามหากฉันพยายามพิมพ์androidในAlt+F2กล่องโต้ตอบ (เรียกใช้แอปพลิเคชัน) แสดงว่ามีข้อผิดพลาดดังต่อไปนี้:

ไม่สามารถเปิดไฟล์ 'ตำแหน่ง: /// home / felix / android'

เกิดข้อผิดพลาดในการระบุไฟล์ '/ home / felix / android': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

ทำไมถึงเป็นอย่างนั้น? สิ่งที่PATHไม่เรียกใช้โปรแกรมประยุกต์ใช้โต้ตอบ?

คำตอบ:


11

ผมถือว่าbashrcไม่ได้อ่านโดย Gnome และทำไมมันเพราะมันเป็นไฟล์ config bashสำหรับ

~/.profileฉันกำหนดเส้นทางของฉันใน ไฟล์นี้ถูกอ่านโดยสภาพแวดล้อม Gnome และ XFCE อย่างแน่นอนและควรทำโดยคนอื่นเช่นกัน (แต่มันเป็นแบบอ่านอย่างเดียวในการเข้าสู่ระบบดังนั้นคุณต้องออกจากระบบและกลับมาในการเปลี่ยนแปลงใด ๆ ที่จะมีผล!)


ฉันย้ายPATH=ข้อความไปที่~/.profileและทำงานได้ทั้งใน Alt + F2 และเทอร์มินัล ขอบคุณ
เฟลิกซ์

ในกรณีของฉันฉันไม่สามารถหาวิธีที่จะทำให้เซสชัน X เริ่มต้นด้วยเชลล์การเข้าสู่ระบบดังนั้นมันจะอ่าน~/.profileดังนั้นฉันต้องเปลี่ยน / bin / sh เพื่อชี้ไปที่ / bin / dash
elias

1
สวัสดีนี่คือ Gnome 3.30.1 พูดและการตั้งค่าเส้นทางใน~/.profileไม่ทำงานอีกต่อไป มีการปรับปรุงเกี่ยวกับเรื่องนี้หรือไม่?
iago-lito

2

~/.bashrcถูกรวม~/.profileโดยค่าเริ่มต้น ~/binไดเรกทอรีจะถูกเพิ่มPATHโดยค่าเริ่มต้นเกินไป สร้าง~/binไดเรกทอรีและเพิ่ม SYM การเชื่อมโยง ( ln -s) ~/.bashrcเพื่อการใช้งานที่คุณตั้งใจที่จะใช้หรือปรับเปลี่ยนของคุณ

เนื้อหาเริ่มต้นของไฟล์ที่กล่าวถึงสามารถพบได้ใน/etc/skel- ใช้ในขณะที่สร้างบัญชีใหม่และไดเรกทอรีบ้านของพวกเขา


1
ใช่ถ้า.profileถูกประหารโดยbash! เงื่อนไขตรวจสอบสิ่ง$BASH_VERSIONที่กำหนดซึ่ง Gnome จะไม่ทำ และโดยวิธีการลบเงื่อนไขจะทำให้เกิดปัญหากับสภาพแวดล้อมเดสก์ทอปบางอย่างเช่น LXDE
Carsten Thiel

0

ฉันมีปัญหาเดียวกันกับ Linux Mint (Cinnamon 2.8.8) และไม่มีทางที่ฉันจะสามารถแก้ไขปัญหาได้ตามปกติ (โดยใช้ a .profile, เปลี่ยนXsessionshebang เป็น/bin/sh -l)

ปัญหาคือ/bin/shซึ่งโดยปกติจะเป็น symlink เพื่อ/bin/dashอ่าน~/.profileว่ามันเป็นเปลือกเข้าสู่ระบบ (เช่นให้-lตัวเลือก)

คุณสามารถตรวจสอบได้ด้วย strace:

$ strace -e open dash
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/dev/tty", O_RDWR)                = 3
$ ^D
+++ exited with 0 +++
$ strace -e open dash -l
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/dev/tty", O_RDWR)                = 3
open("/etc/profile", O_RDONLY)          = 3
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=12260, si_status=0, si_utime=0, si_stime=0} ---
open("/etc/profile.d/Z97-byobu.sh", O_RDONLY) = 3
open("/etc/profile.d/bash_completion.sh", O_RDONLY) = 3
open("/etc/profile.d/vte.sh", O_RDONLY) = 3
open("/home/elias/.profile", O_RDONLY)  = 3
$ ^D
+++ exited with 0 +++

ฉันไม่สามารถคิดได้ว่าสคริปต์ใดที่จะเปลี่ยน (ลองใช้กลุ่มหนึ่งภายใต้ / etc / X11 และ / etc / mdm) แต่ไม่มีโชค

ดังนั้นฉันจึงโยนผ้าเช็ดตัวและเปลี่ยน/bin/shให้ชี้ไปที่/bin/bashแทน/bin/dashและมันก็ใช้งานได้แล้ว :)

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